# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1040033 | Kipras | 선물상자 (IOI15_boxes) | C++17 | 0 ms | 348 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "boxes.h"
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll delivery(int n, int k, int l, int pos[]){
ll mid = (l+1)/2;
vector<ll> dp1, dp2;
dp1.push_back(0);
dp2.push_back(0);
for(int i = 0; i < n && pos[i]<=mid; i++){
if(i==0){
dp1.push_back(pos[i]*2);
continue;
}
if(i%k!=0)dp1.push_back(pos[i]*2-pos[i-1]);
else dp1.push_back(dp1.back()+(ll)pos[i]);
}
for(int x = n-1; x >= 0 && pos[x]>=mid; x--){
if(x==n-1){
dp2.push_back(pos[x]*2);
continue;
}
ll ind = x-n+1;
if(ind%k!=0)dp2.push_back(pos[x]*2-pos[x+1]);
else dp2.push_back(dp1.back()+(ll)pos[x]);
}
cout<<dp1.size()<<" 1, "<<dp2.size()<<" 2: \n";
for(auto i : dp1)cout<<i<<" ";
cout<<"\n";
for(auto i : dp2)cout<<i<<" ";
cout<<"\n";
ll rez = 1e18;
for(int i = 0; i < dp1.size(); i++){
if(dp2.size()>n-i)rez=min(rez, dp1[i] + dp2[n-i]);
if(dp2.size()>n-i-k&&n-i-k>=0)rez=min(rez, dp1[i] + dp2[n-i-k] + l);
}
/*for(int i = 0; i < dp2.size(); i++){
if(dp2.size()>n-i)rez=min(rez, dp1[i] + dp2[n-i]);
if(dp1.size()>n-i-k&&n-i-k>=0)rez=min(rez, dp2[i] + dp1[n-i-k] + l);
}*/
return rez;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |