Submission #128156

#TimeUsernameProblemLanguageResultExecution timeMemory
128156zeyad49Boxes with souvenirs (IOI15_boxes)C++17
0 / 100
5 ms4216 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=1000;
const long long INF=(long)1e18;
int K,L;
int memo[N][N];
int teams[N];

long long dp(int l,int r) {
		if(l>r)
			return 0;
		if(memo[l][r]!=-1)
		return memo[l][r];
		long long ans=INF;
		int last;
		last=max(r, l+K-1);
		ans=dp(last+1,r)+2*teams[last];
		last=min(l, r-K+1);
		ans=min(ans, dp(l,last-1)+2*(L-teams[last]));
		return memo[l][r]=ans;
	}
	long long delivery(int a, int b, int c, int x[]) {
		K=b;
		L=c;
		for(int i=0;i<a;i++){
		    teams[i]=x[i];
		    for(int j=0;j<a;j++)
		        memo[i][j]=-1;
		}
		return dp(0,a-1);
	}
// int main() {
//     ios_base::sync_with_stdio(false);
//     cin.tie(nullptr);
//     cout.tie(NULL);
//   int a,b,c;
//   cin>>a>>b>>c;
//   int z[a];
//   for(int i=0;i<a;i++)
//   cin>>z[i];
//   cout<<delivery(a,b,c,z);
// }
	
	

    

Compilation message (stderr)

boxes.cpp: In function 'long long int dp(int, int)':
boxes.cpp:20:21: warning: conversion to 'int' from 'long long int' may alter its value [-Wconversion]
   return memo[l][r]=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...