Submission #621997

#TimeUsernameProblemLanguageResultExecution timeMemory
621997DeepessonBoxes with souvenirs (IOI15_boxes)C++17
100 / 100
853 ms170196 KiB
#include <bits/stdc++.h> long long delivery(int N, int K, int L, int p[]); using ll = long long; ll inf = 1LL<<60LL; typedef std::pair<ll,ll> pll; long long delivery(int N, int K, int L, int p[]) { ll dp[N+1]; for(auto&x:dp)x=inf; dp[0]=0; std::deque<ll> dn; std::deque<pll> dc; dn.push_back(0); dc.push_back({2*L-2*p[0],0}); for(int i=0;i!=N;++i){ ll custo_local = std::min((ll)L,(ll)2*p[i]); dp[i+1]=std::min(dn.front()+custo_local,dc.front().first); if(dn.size()==K){ dn.pop_front(); } while(dc.size()&&((i+1)-dc.front().second)>=K){ dc.pop_front(); } ll custo_push = 2*L-2*p[i+1]; dn.push_back(dp[i+1]); ll custo_final = dp[i+1]+custo_push; while(dc.size()&&dc.back().first>=custo_final)dc.pop_back(); dc.push_back({custo_final,i+1}); } return dp[N]; }

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:18:21: warning: comparison of integer expressions of different signedness: 'std::deque<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   18 |         if(dn.size()==K){
      |            ~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...