# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
783659 | 2023-07-15T07:39:30 Z | kshitij_sodani | Long Distance Coach (JOI17_coach) | C++14 | 121 ms | 38020 KB |
#include <bits/stdc++.h> using namespace std; #define a first #define b second #define pb push_back typedef long long llo; #define endl '\n' llo it[400001]; llo dp[400001]; llo xx[400001]; llo pre[400001]; llo pre2[400001]; pair<llo,llo> sect(pair<llo,llo> aa,pair<llo,llo> bb){ pair<llo,llo> zz={bb.b-aa.b,aa.a-bb.a}; if(zz.b<0){ zz.b=-zz.b; zz.a=-zz.a; } return zz; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); llo x,n,m,w,t; cin>>x>>n>>m>>w>>t; vector<pair<pair<llo,llo>,llo>> ss; llo ans=((x/t)+1)*w; for(llo i=0;i<n;i++){ cin>>it[i]; ss.pb({{it[i]%t,-1},it[i]/t}); } ss.pb({{x%t,-1},x/t}); for(llo i=0;i<m;i++){ llo aa,bb; cin>>aa>>bb; if((aa)<(x%t)){ ans+=((x/t)*w)+w; xx[i]=(x/t); } else{ ans+=(((x/t))*w); xx[i]=(x/t)-1; } ss.pb({{aa,xx[i]},bb}); } //cout<<ans<<endl; sort(ss.begin(),ss.end()); dp[0]=0; llo ma=0; /*for(auto j:ss){ cout<<j.a.a<<":"<<j.a.b<<":"<<j.b<<endl; }*/ pre[0]=0; pre2[0]=0; for(int i=0;i<ss.size();i++){ pre[i+1]=pre[i]; pre2[i+1]=pre2[i]; if(ss[i].a.b>=0){ pre[i+1]+=ss[i].b; pre[i+1]-=w*ss[i].a.b; pre2[i+1]=pre2[i]+1; } } vector<pair<llo,llo>> ss2; vector<pair<llo,llo>> tt; for(llo i=0;i<ss.size();i++){ dp[i+1]=dp[i]; if(ss[i].a.b>=0){ pair<llo,llo> cur={-w*pre2[i],-pre[i]-dp[i]}; while(ss2.size()>=2){ pair<llo,llo> aa=sect(ss2[ss2.size()-2],ss2.back()); pair<llo,llo> bb=sect(ss2[ss2.size()-2],cur); __int128 xx=(__int128)aa.b*(__int128)bb.a; __int128 yy=(__int128)bb.b*(__int128)aa.a; if(xx<=yy){ ss2.pop_back(); tt.pop_back(); } else{ break; } //check if bb<aa } if(ss2.size()){ tt.pb(sect(ss2.back(),cur)); } ss2.pb(cur); } if(ss[i].a.b==-1){ //llo su=0; /* llo ma=1e18; for(auto jj:ss2){ ma=min(ma,jj.a*(ss[i].b-1)+jj.b); }*/ //query for lowest intersection below ss[i].b-1 llo low=0; pair<llo,llo> aa={ss[i].b-1,1}; for(int j=19;j>=0;j--){ if(low+(1<<j)<tt.size()){ pair<llo,llo> bb=tt[low+(1<<j)]; __int128 xx=(__int128)aa.b*(__int128)bb.a; __int128 yy=(__int128)bb.b*(__int128)aa.a; if(xx<=yy){ low+=(1<<j); } else{ } } } /* for(auto j:tt){ cout<<j.a<<":"<<j.b<<endl; } cout<<endl;*/ llo ma2=1e18; for(int j=low-4;j<=low+4;j++){ if(j<0 or j>=ss2.size()){ continue; } ma2=min(ma2,ss2[j].a*(ss[i].b-1)+ss2[j].b); } dp[i+1]=max(dp[i+1],-ma2+(-ss[i].b+1)*pre2[i+1]*w-pre[i+1]); /*for(llo j=i-1;j>=0;j--){ llo su=-w*pre2[j]*(-ss[i].b+1); //query max here pair<llo,llo> cur={-w*pre2[j],-pre[j]-dp[j]}; //query is (ss[i].b-1) //slope is -ss[i].b+1 //number of type 0 in prefix //dp[i+1]=max(dp[i+1],-cot+(-ss[i].b+1)*pre2[i+1]*w-pre[i+1]); //dp[i+1]=max(dp[i+1],dp[j]+su+(-ss[i].b+1)*pre2[i+1]*w+pre[j]-pre[i+1]); }*/ } ma=max(ma,dp[i+1]); //cout<<dp[i+1]<<","; } //cout<<endl; ans-=ma; cout<<ans<<endl; return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 340 KB | Output is correct |
6 | Correct | 1 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
8 | Correct | 1 ms | 340 KB | Output is correct |
9 | Correct | 0 ms | 340 KB | Output is correct |
10 | Correct | 1 ms | 340 KB | Output is correct |
11 | Correct | 0 ms | 340 KB | Output is correct |
12 | Correct | 0 ms | 340 KB | Output is correct |
13 | Correct | 0 ms | 340 KB | Output is correct |
14 | Correct | 0 ms | 340 KB | Output is correct |
15 | Correct | 0 ms | 340 KB | Output is correct |
16 | Correct | 0 ms | 340 KB | Output is correct |
17 | Correct | 0 ms | 340 KB | Output is correct |
18 | Correct | 0 ms | 340 KB | Output is correct |
19 | Correct | 0 ms | 340 KB | Output is correct |
20 | Correct | 0 ms | 340 KB | Output is correct |
21 | Correct | 0 ms | 340 KB | Output is correct |
22 | Correct | 0 ms | 340 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 340 KB | Output is correct |
6 | Correct | 1 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
8 | Correct | 1 ms | 340 KB | Output is correct |
9 | Correct | 0 ms | 340 KB | Output is correct |
10 | Correct | 1 ms | 340 KB | Output is correct |
11 | Correct | 0 ms | 340 KB | Output is correct |
12 | Correct | 0 ms | 340 KB | Output is correct |
13 | Correct | 0 ms | 340 KB | Output is correct |
14 | Correct | 0 ms | 340 KB | Output is correct |
15 | Correct | 0 ms | 340 KB | Output is correct |
16 | Correct | 0 ms | 340 KB | Output is correct |
17 | Correct | 0 ms | 340 KB | Output is correct |
18 | Correct | 0 ms | 340 KB | Output is correct |
19 | Correct | 0 ms | 340 KB | Output is correct |
20 | Correct | 0 ms | 340 KB | Output is correct |
21 | Correct | 0 ms | 340 KB | Output is correct |
22 | Correct | 0 ms | 340 KB | Output is correct |
23 | Correct | 0 ms | 340 KB | Output is correct |
24 | Correct | 0 ms | 340 KB | Output is correct |
25 | Correct | 0 ms | 340 KB | Output is correct |
26 | Correct | 0 ms | 340 KB | Output is correct |
27 | Correct | 0 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 352 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 0 ms | 340 KB | Output is correct |
32 | Correct | 0 ms | 340 KB | Output is correct |
33 | Correct | 1 ms | 340 KB | Output is correct |
34 | Correct | 0 ms | 340 KB | Output is correct |
35 | Correct | 0 ms | 340 KB | Output is correct |
36 | Correct | 0 ms | 340 KB | Output is correct |
37 | Correct | 1 ms | 340 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 340 KB | Output is correct |
6 | Correct | 1 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
8 | Correct | 1 ms | 340 KB | Output is correct |
9 | Correct | 0 ms | 340 KB | Output is correct |
10 | Correct | 1 ms | 340 KB | Output is correct |
11 | Correct | 0 ms | 340 KB | Output is correct |
12 | Correct | 0 ms | 340 KB | Output is correct |
13 | Correct | 0 ms | 340 KB | Output is correct |
14 | Correct | 0 ms | 340 KB | Output is correct |
15 | Correct | 0 ms | 340 KB | Output is correct |
16 | Correct | 0 ms | 340 KB | Output is correct |
17 | Correct | 0 ms | 340 KB | Output is correct |
18 | Correct | 0 ms | 340 KB | Output is correct |
19 | Correct | 0 ms | 340 KB | Output is correct |
20 | Correct | 0 ms | 340 KB | Output is correct |
21 | Correct | 0 ms | 340 KB | Output is correct |
22 | Correct | 0 ms | 340 KB | Output is correct |
23 | Correct | 0 ms | 340 KB | Output is correct |
24 | Correct | 0 ms | 340 KB | Output is correct |
25 | Correct | 0 ms | 340 KB | Output is correct |
26 | Correct | 0 ms | 340 KB | Output is correct |
27 | Correct | 0 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 352 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 0 ms | 340 KB | Output is correct |
32 | Correct | 0 ms | 340 KB | Output is correct |
33 | Correct | 1 ms | 340 KB | Output is correct |
34 | Correct | 0 ms | 340 KB | Output is correct |
35 | Correct | 0 ms | 340 KB | Output is correct |
36 | Correct | 0 ms | 340 KB | Output is correct |
37 | Correct | 1 ms | 340 KB | Output is correct |
38 | Correct | 1 ms | 596 KB | Output is correct |
39 | Correct | 1 ms | 596 KB | Output is correct |
40 | Correct | 1 ms | 596 KB | Output is correct |
41 | Correct | 1 ms | 596 KB | Output is correct |
42 | Correct | 1 ms | 596 KB | Output is correct |
43 | Correct | 1 ms | 596 KB | Output is correct |
44 | Correct | 1 ms | 596 KB | Output is correct |
45 | Correct | 1 ms | 596 KB | Output is correct |
46 | Correct | 1 ms | 596 KB | Output is correct |
47 | Correct | 1 ms | 596 KB | Output is correct |
48 | Correct | 1 ms | 596 KB | Output is correct |
49 | Correct | 1 ms | 596 KB | Output is correct |
50 | Correct | 1 ms | 596 KB | Output is correct |
51 | Correct | 1 ms | 596 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 340 KB | Output is correct |
2 | Correct | 0 ms | 340 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 0 ms | 340 KB | Output is correct |
6 | Correct | 1 ms | 340 KB | Output is correct |
7 | Correct | 0 ms | 340 KB | Output is correct |
8 | Correct | 1 ms | 340 KB | Output is correct |
9 | Correct | 0 ms | 340 KB | Output is correct |
10 | Correct | 1 ms | 340 KB | Output is correct |
11 | Correct | 0 ms | 340 KB | Output is correct |
12 | Correct | 0 ms | 340 KB | Output is correct |
13 | Correct | 0 ms | 340 KB | Output is correct |
14 | Correct | 0 ms | 340 KB | Output is correct |
15 | Correct | 0 ms | 340 KB | Output is correct |
16 | Correct | 0 ms | 340 KB | Output is correct |
17 | Correct | 0 ms | 340 KB | Output is correct |
18 | Correct | 0 ms | 340 KB | Output is correct |
19 | Correct | 0 ms | 340 KB | Output is correct |
20 | Correct | 0 ms | 340 KB | Output is correct |
21 | Correct | 0 ms | 340 KB | Output is correct |
22 | Correct | 0 ms | 340 KB | Output is correct |
23 | Correct | 0 ms | 340 KB | Output is correct |
24 | Correct | 0 ms | 340 KB | Output is correct |
25 | Correct | 0 ms | 340 KB | Output is correct |
26 | Correct | 0 ms | 340 KB | Output is correct |
27 | Correct | 0 ms | 340 KB | Output is correct |
28 | Correct | 1 ms | 340 KB | Output is correct |
29 | Correct | 1 ms | 352 KB | Output is correct |
30 | Correct | 1 ms | 340 KB | Output is correct |
31 | Correct | 0 ms | 340 KB | Output is correct |
32 | Correct | 0 ms | 340 KB | Output is correct |
33 | Correct | 1 ms | 340 KB | Output is correct |
34 | Correct | 0 ms | 340 KB | Output is correct |
35 | Correct | 0 ms | 340 KB | Output is correct |
36 | Correct | 0 ms | 340 KB | Output is correct |
37 | Correct | 1 ms | 340 KB | Output is correct |
38 | Correct | 1 ms | 596 KB | Output is correct |
39 | Correct | 1 ms | 596 KB | Output is correct |
40 | Correct | 1 ms | 596 KB | Output is correct |
41 | Correct | 1 ms | 596 KB | Output is correct |
42 | Correct | 1 ms | 596 KB | Output is correct |
43 | Correct | 1 ms | 596 KB | Output is correct |
44 | Correct | 1 ms | 596 KB | Output is correct |
45 | Correct | 1 ms | 596 KB | Output is correct |
46 | Correct | 1 ms | 596 KB | Output is correct |
47 | Correct | 1 ms | 596 KB | Output is correct |
48 | Correct | 1 ms | 596 KB | Output is correct |
49 | Correct | 1 ms | 596 KB | Output is correct |
50 | Correct | 1 ms | 596 KB | Output is correct |
51 | Correct | 1 ms | 596 KB | Output is correct |
52 | Correct | 104 ms | 22320 KB | Output is correct |
53 | Correct | 121 ms | 28128 KB | Output is correct |
54 | Correct | 100 ms | 27172 KB | Output is correct |
55 | Correct | 113 ms | 27440 KB | Output is correct |
56 | Correct | 101 ms | 27752 KB | Output is correct |
57 | Correct | 101 ms | 27492 KB | Output is correct |
58 | Correct | 104 ms | 28184 KB | Output is correct |
59 | Correct | 100 ms | 27440 KB | Output is correct |
60 | Correct | 99 ms | 27192 KB | Output is correct |
61 | Correct | 98 ms | 27368 KB | Output is correct |
62 | Correct | 98 ms | 27372 KB | Output is correct |
63 | Correct | 108 ms | 38020 KB | Output is correct |
64 | Correct | 85 ms | 28192 KB | Output is correct |
65 | Correct | 120 ms | 28108 KB | Output is correct |
66 | Correct | 106 ms | 28040 KB | Output is correct |
67 | Correct | 111 ms | 28236 KB | Output is correct |
68 | Correct | 107 ms | 28216 KB | Output is correct |
69 | Correct | 106 ms | 27772 KB | Output is correct |
70 | Correct | 108 ms | 27860 KB | Output is correct |
71 | Correct | 105 ms | 27740 KB | Output is correct |
72 | Correct | 108 ms | 27840 KB | Output is correct |
73 | Correct | 104 ms | 27900 KB | Output is correct |
74 | Correct | 106 ms | 27912 KB | Output is correct |
75 | Correct | 103 ms | 27996 KB | Output is correct |
76 | Correct | 121 ms | 28080 KB | Output is correct |
77 | Correct | 105 ms | 27768 KB | Output is correct |
78 | Correct | 103 ms | 28016 KB | Output is correct |
79 | Correct | 103 ms | 27460 KB | Output is correct |
80 | Correct | 103 ms | 27408 KB | Output is correct |