Submission #733557

#TimeUsernameProblemLanguageResultExecution timeMemory
733557senthetaBoxes with souvenirs (IOI15_boxes)C++17
10 / 100
1 ms340 KiB
#include "boxes.h" // author : sentheta aka vanwij #include<iostream> #include<iomanip> #include<algorithm> #include<cassert> #include<random> #include<chrono> #include<cmath> #include<string> #include<vector> #include<bitset> #include<queue> #include<stack> #include<map> #include<set> using namespace std; #define Int long long #define V vector #define pii pair<int,int> #define ff first #define ss second mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); #define pow2(x) (1LL<<(x)) #define msb(x) (63-__builtin_clzll(x)) #define bitcnt(x) (__builtin_popcountll(x)) #define nl '\n' #define _ << ' ' << #define all(x) (x).begin(), (x).end() #define rep(i,a,b) for(int i = (int)(a); i < (int)(b); i++) #define dbg(x) if(1) cout << "?" << #x << " : " << (x) << endl << flush; const Int INF = 1e18; const Int N = 1e7+5; Int n, k, len; int *p; V<Int> v[2]; Int dp[2][N]; Int b[N]; Int delivery(int _n,int _k,int _l,int _p[]) { n = _n; k = _k; len = _l; p = _p; v[0] = v[1] = {0}; Int nonzro = 0; rep(i,0,n) if(p[i]){ nonzro++; if(p[i]<=len/2) v[0].push_back(p[i]); else v[1].push_back(len-p[i]); } rep(i,0,k){ b[i] = INF; } Int ans = INF; rep(t,0,2){ // dbg(t); rep(i,0,v[t].size()){ // dbg(v[t][i]); dp[t][i] = v[t][i]*2; if(i >= k){ dp[t][i] += dp[t][i-k]; } // dbg(dp[t][i]); if(t==0){ b[i%k] = min(b[i%k], dp[t][i]*k-i*len); // dbg(b[i%k]); } if(t==1){ Int mov = b[(nonzro-i)%k] + dp[t][i]*k-i*len +nonzro*len; mov /= k; // dbg(mov); ans = min(ans, mov); } // cout << nl; } } return ans; }
#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...