제출 #425392

#제출 시각아이디문제언어결과실행 시간메모리
425392dreezy선물상자 (IOI15_boxes)C++17
20 / 100
8 ms296 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; #define ll long long long long delivery(int N, int K, int LL, int pp[]) { //vector<ll> p(N); ll L = LL; ll p[N]; for(int i =0; i<N; i++) p[i] = pp[i]; //for(int i = 0; i<n; i++) p[i] = pp[i]; ll ans = 1e18; ll mid = L/2; int midind = N; for(int i =0; i<N; i++){ if(p[i] > mid){ midind = i; break; } } //cout << midind<<endl; for(int first = 0; first< N; first++){ ll curans = 0; // cout << first<<":: "<<endl; for(int rng = first; rng < N + first; rng += K){ int start = rng; int end = start + K -1; int mstart = start % N; int mend = end % N; if(end - N >= first){ end = first - 1 + N; mend = end % N; } if(end < N){ //cout <<start<<", "<<end<< ": "<< p[start]<<", "<<p[end]<<endl; if(end< midind){//if they are alll in first half curans += 2 * p[end]; } //all in second half else if(start >= midind){ curans += 2 * ( L - p[start]); } else{ //cout <<"hi"<<endl; curans += min(L, 2*p[midind - 1] + 2 * (L-p[midind] )); } } else{ if( start < N){ if(start < midind){ curans += L; } else if(mend >= midind){ curans += L; } else{ //cout <<"bye"<<endl; curans += max(L , 2 * p[mend] + 2 * (L-p[midind]) ); } } else{ if(mend< midind){//if they are alll in first half curans += 2 * p[mend]; } //all in second half else if(mstart >= midind){ curans += 2 * ( L - p[mstart]); } else{ //cout <<"bye"<<endl; curans += min(L, 2*p[midind - 1] + 2 * (L-p[midind]) ); } } } // do circle //cout << rng<<": "<<curans<<" "; } // cout <<":: "<<curans<<endl<<endl; ans = min(curans, ans); } 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...