Submission #747635


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))
#define each(itr,c) for(__typeof(c.begin()) itr=c.begin(); itr!=c.end(); ++itr)
#define all(x) (x).begin(),(x).end()
#define mp make_pair
#define pb push_back
#define fi first
#define se second

typedef pair<int,int> pi;

/******************************
 MaxSegTree.cpp  START
******************************/

/******************************
 区間の最大値を返すSegmentTree
******************************/

struct MaxSegTree{
    long n; vector<ll> dat;
    //初期化
    MaxSegTree(long _n){
        n=1;
        while(n<_n) n*=2;
        dat=vector<ll>(2*n-1,0);
    }
    //k番目(0-indexed)の値をaに変更
    void update(long k, ll a){
        k+=n-1;
        dat[k]=max(dat[k],a);
        //更新
        while(k>0){
            k=(k-1)/2;
            dat[k]=max(dat[2*k+1],dat[2*k+2]);
        }
    }
    //内部的に投げられるクエリ
    ll _query(long a, long b, long k, long l, long r){
        if(r<=a || b<=l) return LLONG_MIN;

        if(a<=l && r<=b) return dat[k];
        else{
            ll vl=_query(a,b,2*k+1,l,(l+r)/2);
            ll vr=_query(a,b,2*k+2,(l+r)/2,r);
            return max(vl,vr);
        }
    }
    //[a,b)の最大値を求める
    ll query(long a, long b){
        return _query(a,b,0,0,n);
    }
};

/******************************
 MaxSegTree.cpp  END
******************************/

int main()
{
    int n;
    cin >>n;
    vector<pi> p(n);
    rep(i,n) scanf(" %d %d", &p[i].fi, &p[i].se);
    rep(i,n) p[i].se=-p[i].se;
    sort(all(p));
    rep(i,n) p[i].se=-p[i].se;

    MaxSegTree s(100001);
    rep(i,n)
    {
        ll res=s.query(0,p[i].se);
        s.update(p[i].se,res+1);
    }

    cout << s.query(0,100001) << endl;
    return 0;
}

Submission Info

Submission Time
Task D - プレゼント
User imulan
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1923 Byte
Status AC
Exec Time 81 ms
Memory 3072 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:67:49: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     rep(i,n) scanf(" %d %d", &p[i].fi, &p[i].se);
                                                 ^

Judge Result

Set Name Sample Subtask0 All
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 4
AC × 19
AC × 30
Set Name Test Cases
Sample sample0.txt, sample1.txt, sample2.txt, sample3.txt
Subtask0 subtask0_0.txt, subtask0_1.txt, subtask0_10.txt, subtask0_11.txt, subtask0_12.txt, subtask0_13.txt, subtask0_14.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, sample0.txt, sample1.txt, sample2.txt, sample3.txt
All subtask0_0.txt, subtask0_1.txt, subtask0_10.txt, subtask0_11.txt, subtask0_12.txt, subtask0_13.txt, subtask0_14.txt, subtask0_2.txt, subtask0_3.txt, subtask0_4.txt, subtask0_5.txt, subtask0_6.txt, subtask0_7.txt, subtask0_8.txt, subtask0_9.txt, subtask1_0.txt, subtask1_1.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_2.txt, subtask1_3.txt, subtask1_4.txt, subtask1_5.txt, subtask1_6.txt, subtask1_7.txt, subtask1_8.txt, subtask1_9.txt
Case Name Status Exec Time Memory
sample0.txt AC 8 ms 2304 KB
sample1.txt AC 7 ms 2304 KB
sample2.txt AC 9 ms 2304 KB
sample3.txt AC 7 ms 2304 KB
subtask0_0.txt AC 7 ms 2304 KB
subtask0_1.txt AC 7 ms 2304 KB
subtask0_10.txt AC 8 ms 2304 KB
subtask0_11.txt AC 8 ms 2304 KB
subtask0_12.txt AC 8 ms 2304 KB
subtask0_13.txt AC 8 ms 2304 KB
subtask0_14.txt AC 8 ms 2304 KB
subtask0_2.txt AC 7 ms 2304 KB
subtask0_3.txt AC 7 ms 2304 KB
subtask0_4.txt AC 8 ms 2304 KB
subtask0_5.txt AC 7 ms 2304 KB
subtask0_6.txt AC 8 ms 2304 KB
subtask0_7.txt AC 8 ms 2304 KB
subtask0_8.txt AC 8 ms 2304 KB
subtask0_9.txt AC 8 ms 2304 KB
subtask1_0.txt AC 52 ms 2816 KB
subtask1_1.txt AC 9 ms 2304 KB
subtask1_10.txt AC 62 ms 3072 KB
subtask1_11.txt AC 60 ms 3072 KB
subtask1_12.txt AC 81 ms 3072 KB
subtask1_13.txt AC 81 ms 3072 KB
subtask1_14.txt AC 81 ms 3072 KB
subtask1_2.txt AC 19 ms 2432 KB
subtask1_3.txt AC 70 ms 2944 KB
subtask1_4.txt AC 80 ms 3072 KB
subtask1_5.txt AC 18 ms 2432 KB
subtask1_6.txt AC 62 ms 2816 KB
subtask1_7.txt AC 37 ms 2560 KB
subtask1_8.txt AC 71 ms 2944 KB
subtask1_9.txt AC 39 ms 2688 KB