제출 #286754

#제출 시각아이디문제언어결과실행 시간메모리
286754Marlov선물상자 (IOI15_boxes)C++14
0 / 100
1 ms384 KiB
/*
Code by @marlov       
*/
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <string>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <utility>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <stack>
#include <queue>
#include <iterator>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;

#define maxN 10000000

int dpfront[maxN],dpback[maxN];

int delivery(int N,int K,int L,int position[]){
	int ci=0;
	while(position[ci]==0){
		ci++;
		N--;
	}
	int pos[N];
	for(int i=ci;i<N;i++){
		pos[i-ci]=position[i];
	}
	for(int i=0;i<N;i++){
		if(i<K) dpfront[i]=min(L,2*pos[i]);
		else dpfront[i]=min(L,2*pos[i])+dpfront[i-K];
	}
	for(int i=0;i<N;i++){
		if(i<K) dpback[i]=min(L,2*(L-pos[N-i-1]));
		else dpback[i]=min(L,2*(L-pos[N-i-1]))+dpback[i-K];
	}
	/*
	for(int i=0;i<N;i++){
		cout<<dpfront[i]<<" and "<<dpback[i]<<'\n';
	}
	*/
	int result=min(dpback[N-1],dpfront[N-1]);
	for(int i=1;i<=N-1;i++){
		
		result=min(dpfront[i-1]+dpback[N-i-1],result);
	}
	return result;
}
#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...