Submission #1187665

#TimeUsernameProblemLanguageResultExecution timeMemory
1187665simona1230Boxes with souvenirs (IOI15_boxes)C++17
50 / 100
2096 ms27720 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; long long n,k,l; const long long maxn=1e7+5; long long a[maxn]; long long p[maxn]; long long s[maxn]; long long delivery(int N, int K, int L, int P[]) { long long id=0; for(long long i=0;i<N;i++) if(P[i]==0)id=i+1,N--; n=N; k=K; l=L; for(long long i=0;i<n;i++) a[i]=P[id+i]; for(long long i=0;i<n;i++) { p[i]=a[i]*2; if(i-k>=0)p[i]+=p[i-k]; } for(long long i=n-1;i>=0;i--) { s[i]=(l-a[i])*2; if(i+k<=n-1)s[i]+=s[i+k]; } long long ans=1e18; for(long long i=0;i<n;i++) { for(long long j=i+1;j<=n-1;j++) { long long lf=n-(i-0+1)-(n-1-j+1); long long lap=lf/k; if(lf%k)lap++; ans=min(ans,lap*l+p[i]+s[j]); } long long lf1=n-(i-0+1); long long lf2=n-(n-1-i+1); long long lap1=lf1/k; if(lf1%k)lap1++; long long lap2=lf2/k; if(lf2%k)lap2++; ans=min(ans,p[i]+lap1*l); ans=min(ans,s[i]+lap2*l); } long long lap=n/k; if(n%k)lap++; ans=min(ans,lap*l); 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...