Submission #783643

#TimeUsernameProblemLanguageResultExecution timeMemory
783643kshitij_sodaniLong Distance Coach (JOI17_coach)C++14
71 / 100
2068 ms16696 KiB
#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[200001]; llo dp[200001]; llo xx[200001]; llo pre[200001]; llo pre2[200001]; 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; } } for(llo i=0;i<ss.size();i++){ dp[i+1]=dp[i]; if(ss[i].a.b==-1){ //llo su=0; for(llo j=i-1;j>=0;j--){ /*if(ss[j].a.b>=0){ su+=(w*(-ss[i].b+1));//-ss[j].b; }*/ llo su=-w*pre2[j]*(-ss[i].b+1); //slope is -ss[i].b+1 //number of type 0 in prefix 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 (stderr)

coach.cpp: In function 'int main()':
coach.cpp:49:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<long long int, long long int>, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |  for(int i=0;i<ss.size();i++){
      |              ~^~~~~~~~~~
coach.cpp:58:15: warning: comparison of integer expressions of different signedness: 'llo' {aka 'long long int'} and 'std::vector<std::pair<std::pair<long long int, long long int>, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |  for(llo i=0;i<ss.size();i++){
      |              ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...