Submission #319575

#TimeUsernameProblemLanguageResultExecution timeMemory
319575tjdgus4384Boxes with souvenirs (IOI15_boxes)C++14
20 / 100
1 ms512 KiB
#include<bits/stdc++.h> #include "boxes.h" using namespace std; long long delivery(int N, int K, int L, int positions[]){ int i; long long ans = 0; if(K == 1 || K == N){ for(i = 0;i + K - 1 < N;i += K){ if(positions[i] > L/2) ans += (long long)(L-positions[i])*2; else if(positions[i + K - 1] <= L/2) ans += (long long)positions[i + K - 1]*2; else{ for(int j = i+1;j <= i + K - 1;j++){ if(positions[j]-positions[j-1] > L/2){ ans += (long long)(L-positions[j]+positions[j-1])*2; goto next; } } ans += (long long)L; } next:; } if(i == N) return ans; if(positions[i] > L/2) ans += (long long)(L-positions[i])*2; else if(positions[N-1] <= L/2) ans += (long long)positions[N-1] * 2; else{ for(int j = i+1;j <= N - 1;j++){ if(positions[j]-positions[j-1] > L/2){ ans += (long long)(L-positions[j]+positions[j-1])*2; goto next1; } } ans += (long long)L; } next1:; return ans; } for(int i = 1;i < N;i++){ if(positions[i] - positions[i-1] > L/2){ int t = i - 1; while(t >= 0) {ans += positions[t]*2;t -= K;} t = i; while(t < N) {ans += (L-positions[t])*2;t += K;} return ans; } } long long ans1 = 0, ans2 = 0; for(i = 0;i + K - 1 < N;i += K){ if(positions[i] > L/2) ans1 += (long long)(L-positions[i])*2; else if(positions[i + K - 1] <= L/2) ans1 += (long long)positions[i + K - 1]*2; else ans1 += (long long)L; } if(i != N){ if(positions[i] > L/2) ans1 += (long long)(L-positions[i])*2; else if(positions[N-1] <= L/2) ans1 += (long long)positions[N-1] * 2; else ans1 += (long long) L; } for(i = 0;i + K - 1 < N;i += K){ if(positions[N - 1 - i] > L/2) ans2 += (long long)(L-positions[N - 1 - i])*2; else if(positions[N - 1 - (i + K - 1)] <= L/2) ans2 += (long long)positions[N - 1 - (i + K - 1)]*2; else ans2 += (long long)L; } if(i != N){ if(positions[N - 1 - i] > L/2) ans2 += (long long)(L-positions[N - 1 - i])*2; else if(positions[0] <= L/2) ans2 += (long long)positions[0] * 2; else ans2 += (long long) L; } return min(ans1, ans2); }

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:38:13: warning: declaration of 'i' shadows a previous local [-Wshadow]
   38 |     for(int i = 1;i < N;i++){
      |             ^
boxes.cpp:6:9: note: shadowed declaration is here
    6 |     int 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...