Submission #1246662

#TimeUsernameProblemLanguageResultExecution timeMemory
1246662santi3223선물상자 (IOI15_boxes)C++20
50 / 100
2092 ms8528 KiB
#include <bits/stdc++.h> #include "boxes.h" using namespace std; #define ll long long #define vb vector<bool> #define pb push_back #define ff(aa, bb, cc) for(int aa = bb; aa < cc; aa++) #define vl vector<ll> #define pll pair<ll, ll> #define fi first #define se second #define ed "\n" #define all(aaa) aaa.begin(), aaa.end() #define rall(aaa) aaa.rbegin(), aaa.rend() ll MOD = 1e9+7; long long delivery(int n, int k, int l, int p[]){ vector<int> arr; bool ok = false; ff(i, 0, n){ arr.pb(p[i]); if(p[i] == l/2){ ok = true; } } ll minn = LLONG_MAX; if(l % 2 == 0 && ok){ //cout << "CASO 1" << ed; ll le = lower_bound(all(arr), l/2) - arr.begin(); ll ri = upper_bound(all(arr), l/2) - arr.begin(); ll st = max(le-k+1, 0LL); ll curst = st, curend = st+k-1; //cout << "LE " << le << " RI " << ri << " CURST" << curst << ed; while(curst <= ri && curend <= n){ //cout << curst << " -> " << curend << ed; ll cur = l; ll s = 0; for(ll i = curst-1; i >= 0; i -= k){ s += arr[i]*2; cur += arr[i]*2; } //cout << "SUM izq " << s << ed; s = 0; for(ll i = curend+1; i < n; i += k){ //cout << (l-arr[i])*2 << " "; s += ((l-arr[i])*2); cur += (l-arr[i])*2; } //cout << ed; //cout << "SUM der " << s << ed; //cout << "FIN " << cur << ed << ed; minn = min(minn, cur); curst++; curend++; } } else{ //cout << "CASO 2" << ed; ll ri = lower_bound(all(arr), l/2) - arr.begin(); ll curst = max(ri-k+1, 0LL), curend = curst+k-1; //cout << curst << " " << ri << " " << curend << " " << n << ed; while(curst <= ri && curend <= n){ //cout << curst << " -> " << curend << ed; ll cur = l; ll s = 0; for(ll i = curst-1; i >= 0; i -= k){ s += arr[i]*2; cur += arr[i]*2; } //cout << "SUM izq " << s << ed; s = 0; for(ll i = curend+1; i < n; i += k){ //cout << (l-arr[i])*2 << " "; s += ((l-arr[i])*2); cur += (l-arr[i])*2; } //cout << ed; //cout << "SUM der " << s << ed; //cout << "FIN " << cur << ed << ed; minn = min(minn, cur); curst++; curend++; } } ll id = -1; //cout << "NO CIRCLE" << ed; while(id < n){ //cout << "ID " << id << ed; ll cur = 0; ll s = 0; for(ll i = id; i >= 0; i -= k){ //cout << arr[i]*2 << " "; s += arr[i]*2; cur += arr[i]*2; } //cout << ed; //cout << "SUM izq " << s << ed; s = 0; for(ll i = id+1; i < n; i += k){ //cout << (l-arr[i])*2 << " "; s += (l-arr[i])*2; cur += (l-arr[i])*2; } //cout << ed; //cout << "SUM der " << s << ed; //cout << "FIN " << cur << ed << ed; minn = min(minn, cur); id++; } return minn; } /* int main() { int N, K, L; cin >> N >> K >> L; int p[N]; ff(i, 0, N){ cin >> p[i]; } long long ans = delivery(N, K, L, p); cout << ans << ed; return 0; } */
#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...