제출 #1266105

#제출 시각아이디문제언어결과실행 시간메모리
1266105scalifrastico_098선물상자 (IOI15_boxes)C++20
100 / 100
561 ms196240 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; long long delivery(int n, int k, int l, int p[]) { long long kact=k, po=0, dist=-1, dist1=-1, y=0; vector<long long> a, b, c, d; for(long long i=0; i<n; i++){if(p[i]==0) continue; if(p[i]<=l/2){a.push_back(p[i]);} else b.push_back(l-p[i]);} sort(a.begin(), a.end()); sort(b.begin(), b.end()); if(a.size()>0)dist=a.size()-1; if(b.size()>0)dist1=b.size()-1; for(long long i=dist; i>=0; i-=k) { y+=(2*a[i]); } for(long long i=dist1; i>=0; i-=k) { po+=(2*(b[i])); } y+=po; c.resize(a.size());for(int i=0; i<a.size(); i++) c[i]=2*a[i]; for(int i=k; i<a.size(); i++) c[i]+=c[i-k]; d.resize(b.size());for(int i=0; i<b.size(); i++) d[i]=2*b[i]; for(int i=k; i<b.size(); i++) d[i]+=d[i-k]; for(int i=0; i<=k; i++) { long long u=0, v=0; if(i<a.size()){int ind=a.size()-1-i; if(ind>=0)u=c[ind];} if(k-i<b.size()){int ind=b.size()-1-(k-i); if(ind>=0)v=d[ind];} y=min(y, (long long)l+u+v); } return y; }
#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...