Submission #754887

# Submission time Handle Problem Language Result Execution time Memory
754887 2023-06-08T20:09:06 Z alexander707070 Roller Coaster Railroad (IOI16_railroad) C++14
64 / 100
153 ms 13292 KB
#include <bits/stdc++.h>
 
using namespace std;

const long long inf=1e15;
 
int n,fullmask;
pair<long long,long long> a[200007];
int ind[200007],curr;
 
bool cmp(int x,int y){
    return a[x].second>a[y].second;
}

int tree[4*200007],pos,cnt;

void build(int v,int l,int r){
    if(l==r){
        tree[v]=l;
    }else{
        int tt=(l+r)/2;
        build(2*v,l,tt);
        build(2*v+1,tt+1,r);
        tree[v]=l;
    }
}

void update(int v,int l,int r,int pos){
    if(l==r){
        tree[v]=n+1;
    }else{
        int tt=(l+r)/2;
        if(pos<=tt)update(2*v,l,tt,pos);
        else update(2*v+1,tt+1,r,pos);
        tree[v]=min(tree[2*v],tree[2*v+1]);
    }
}

int getmin(int v,int l,int r,int ll,int rr){
    if(ll>rr)return n+1;
    if(l==ll and r==rr){
        return tree[v];
    }else{
        int tt=(l+r)/2;
        return min( getmin(2*v,l,tt,ll,min(tt,rr)) , getmin(2*v+1,tt+1,r,max(tt+1,ll),rr) );
    }
}

long long dp[17][65536];
bool li[17][65536];

long long ff(int last,int mask){
    if(mask==fullmask)return 0;

    if(li[last][mask])return dp[last][mask];
    li[last][mask]=true;
    dp[last][mask]=inf;

    for(int i=0;i<n;i++){
        if(((1<<i)&mask)>0)continue;
        dp[last][mask]=min(dp[last][mask],ff(i,mask|(1<<i))+max(a[i+1].second-a[last+1].first,0LL));
    }

    return dp[last][mask];
}

long long plan_roller_coaster(vector<int> s,vector<int> t){

    n=s.size();
    for(int i=1;i<=n;i++){
        a[i]={s[i-1],t[i-1]};
        ind[i]=i;
    }

    if(n<=16){
        fullmask=(1<<n)-1;
        a[n+1].first=inf;
        return ff(n,0);
    }

    sort(a+1,a+n+1);
    sort(ind+1,ind+n+1,cmp);
    build(1,1,n);

    for(int i=1;i<=n;i++){
        curr=ind[i];
        int l=0,r=n+1,tt;
        while(l+1<r){
            tt=(l+r)/2;
            if(a[curr].second<=a[tt].first){
                r=tt;
            }else{
                l=tt;
            }
        }
        pos=getmin(1,1,n,r,n);
        if(pos==curr)pos=getmin(1,1,n,pos+1,n);

        if(pos==n+1)cnt++;
        else update(1,1,n,pos);
    }

    if(cnt>1)return 1;

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 2
2 Correct 0 ms 340 KB n = 2
3 Correct 1 ms 340 KB n = 2
4 Correct 1 ms 340 KB n = 2
5 Correct 0 ms 340 KB n = 2
6 Correct 0 ms 340 KB n = 2
7 Correct 1 ms 312 KB n = 3
8 Correct 1 ms 316 KB n = 3
9 Correct 1 ms 312 KB n = 3
10 Correct 1 ms 340 KB n = 8
11 Correct 1 ms 340 KB n = 8
12 Correct 1 ms 340 KB n = 8
13 Correct 1 ms 340 KB n = 8
14 Correct 1 ms 312 KB n = 8
15 Correct 1 ms 340 KB n = 8
16 Correct 1 ms 340 KB n = 8
17 Correct 1 ms 340 KB n = 8
18 Correct 1 ms 340 KB n = 8
19 Correct 0 ms 340 KB n = 3
20 Correct 1 ms 340 KB n = 7
21 Correct 1 ms 308 KB n = 8
22 Correct 1 ms 340 KB n = 8
23 Correct 1 ms 340 KB n = 8
24 Correct 1 ms 340 KB n = 8
25 Correct 1 ms 340 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 2
2 Correct 0 ms 340 KB n = 2
3 Correct 1 ms 340 KB n = 2
4 Correct 1 ms 340 KB n = 2
5 Correct 0 ms 340 KB n = 2
6 Correct 0 ms 340 KB n = 2
7 Correct 1 ms 312 KB n = 3
8 Correct 1 ms 316 KB n = 3
9 Correct 1 ms 312 KB n = 3
10 Correct 1 ms 340 KB n = 8
11 Correct 1 ms 340 KB n = 8
12 Correct 1 ms 340 KB n = 8
13 Correct 1 ms 340 KB n = 8
14 Correct 1 ms 312 KB n = 8
15 Correct 1 ms 340 KB n = 8
16 Correct 1 ms 340 KB n = 8
17 Correct 1 ms 340 KB n = 8
18 Correct 1 ms 340 KB n = 8
19 Correct 0 ms 340 KB n = 3
20 Correct 1 ms 340 KB n = 7
21 Correct 1 ms 308 KB n = 8
22 Correct 1 ms 340 KB n = 8
23 Correct 1 ms 340 KB n = 8
24 Correct 1 ms 340 KB n = 8
25 Correct 1 ms 340 KB n = 8
26 Correct 0 ms 340 KB n = 8
27 Correct 1 ms 308 KB n = 8
28 Correct 1 ms 340 KB n = 8
29 Correct 83 ms 8196 KB n = 16
30 Correct 66 ms 8196 KB n = 16
31 Correct 56 ms 8140 KB n = 16
32 Correct 61 ms 8196 KB n = 16
33 Correct 56 ms 8156 KB n = 16
34 Correct 71 ms 8196 KB n = 16
35 Correct 68 ms 8140 KB n = 16
36 Correct 23 ms 4180 KB n = 15
37 Correct 0 ms 308 KB n = 8
38 Correct 60 ms 8192 KB n = 16
39 Correct 70 ms 8196 KB n = 16
40 Correct 1 ms 340 KB n = 9
41 Correct 60 ms 8152 KB n = 16
42 Correct 67 ms 8276 KB n = 16
43 Correct 72 ms 8196 KB n = 16
44 Correct 1 ms 340 KB n = 9
45 Correct 23 ms 4180 KB n = 15
46 Correct 62 ms 8204 KB n = 16
47 Correct 62 ms 8104 KB n = 16
48 Correct 65 ms 8140 KB n = 16
# Verdict Execution time Memory Grader output
1 Correct 145 ms 9412 KB n = 199999
2 Correct 136 ms 9304 KB n = 199991
3 Correct 130 ms 9284 KB n = 199993
4 Correct 103 ms 7728 KB n = 152076
5 Correct 64 ms 4764 KB n = 93249
6 Correct 125 ms 9408 KB n = 199910
7 Correct 123 ms 9304 KB n = 199999
8 Correct 121 ms 9400 KB n = 199997
9 Correct 118 ms 8412 KB n = 171294
10 Correct 98 ms 7440 KB n = 140872
11 Correct 129 ms 9408 KB n = 199886
12 Correct 137 ms 9292 KB n = 199996
13 Correct 129 ms 9312 KB n = 200000
14 Correct 125 ms 9472 KB n = 199998
15 Correct 126 ms 9300 KB n = 200000
16 Correct 129 ms 9292 KB n = 199998
17 Correct 79 ms 9296 KB n = 200000
18 Correct 146 ms 9060 KB n = 190000
19 Correct 78 ms 8632 KB n = 177777
20 Correct 67 ms 4876 KB n = 100000
21 Correct 150 ms 9400 KB n = 200000
22 Correct 153 ms 9292 KB n = 200000
23 Correct 144 ms 9408 KB n = 200000
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB n = 2
2 Correct 0 ms 340 KB n = 2
3 Correct 1 ms 340 KB n = 2
4 Correct 1 ms 340 KB n = 2
5 Correct 0 ms 340 KB n = 2
6 Correct 0 ms 340 KB n = 2
7 Correct 1 ms 312 KB n = 3
8 Correct 1 ms 316 KB n = 3
9 Correct 1 ms 312 KB n = 3
10 Correct 1 ms 340 KB n = 8
11 Correct 1 ms 340 KB n = 8
12 Correct 1 ms 340 KB n = 8
13 Correct 1 ms 340 KB n = 8
14 Correct 1 ms 312 KB n = 8
15 Correct 1 ms 340 KB n = 8
16 Correct 1 ms 340 KB n = 8
17 Correct 1 ms 340 KB n = 8
18 Correct 1 ms 340 KB n = 8
19 Correct 0 ms 340 KB n = 3
20 Correct 1 ms 340 KB n = 7
21 Correct 1 ms 308 KB n = 8
22 Correct 1 ms 340 KB n = 8
23 Correct 1 ms 340 KB n = 8
24 Correct 1 ms 340 KB n = 8
25 Correct 1 ms 340 KB n = 8
26 Correct 0 ms 340 KB n = 8
27 Correct 1 ms 308 KB n = 8
28 Correct 1 ms 340 KB n = 8
29 Correct 83 ms 8196 KB n = 16
30 Correct 66 ms 8196 KB n = 16
31 Correct 56 ms 8140 KB n = 16
32 Correct 61 ms 8196 KB n = 16
33 Correct 56 ms 8156 KB n = 16
34 Correct 71 ms 8196 KB n = 16
35 Correct 68 ms 8140 KB n = 16
36 Correct 23 ms 4180 KB n = 15
37 Correct 0 ms 308 KB n = 8
38 Correct 60 ms 8192 KB n = 16
39 Correct 70 ms 8196 KB n = 16
40 Correct 1 ms 340 KB n = 9
41 Correct 60 ms 8152 KB n = 16
42 Correct 67 ms 8276 KB n = 16
43 Correct 72 ms 8196 KB n = 16
44 Correct 1 ms 340 KB n = 9
45 Correct 23 ms 4180 KB n = 15
46 Correct 62 ms 8204 KB n = 16
47 Correct 62 ms 8104 KB n = 16
48 Correct 65 ms 8140 KB n = 16
49 Correct 145 ms 9412 KB n = 199999
50 Correct 136 ms 9304 KB n = 199991
51 Correct 130 ms 9284 KB n = 199993
52 Correct 103 ms 7728 KB n = 152076
53 Correct 64 ms 4764 KB n = 93249
54 Correct 125 ms 9408 KB n = 199910
55 Correct 123 ms 9304 KB n = 199999
56 Correct 121 ms 9400 KB n = 199997
57 Correct 118 ms 8412 KB n = 171294
58 Correct 98 ms 7440 KB n = 140872
59 Correct 129 ms 9408 KB n = 199886
60 Correct 137 ms 9292 KB n = 199996
61 Correct 129 ms 9312 KB n = 200000
62 Correct 125 ms 9472 KB n = 199998
63 Correct 126 ms 9300 KB n = 200000
64 Correct 129 ms 9292 KB n = 199998
65 Correct 79 ms 9296 KB n = 200000
66 Correct 146 ms 9060 KB n = 190000
67 Correct 78 ms 8632 KB n = 177777
68 Correct 67 ms 4876 KB n = 100000
69 Correct 150 ms 9400 KB n = 200000
70 Correct 153 ms 9292 KB n = 200000
71 Correct 144 ms 9408 KB n = 200000
72 Correct 150 ms 13292 KB n = 200000
73 Incorrect 140 ms 13264 KB answer is not correct: 1 instead of 34382661743
74 Halted 0 ms 0 KB -