Submission #444846

#TimeUsernameProblemLanguageResultExecution timeMemory
444846KhizriBoxes with souvenirs (IOI15_boxes)C++17
35 / 100
4 ms8140 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back		 
#define F first																 
#define S second 															 
#define INF 1e18
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pii pair<int,int>
#define pll pair<ll,ll>
#define OK cout<<"Ok"<<endl;
#define MOD (ll)(1e9+7)
#define endl "\n"
const int mxn=1e7+5;
ll l[mxn],r[mxn];
ll dp[1005][1005];
ll funk(int n,int k,ll dis,int arr[],int l,int r){
	if(l>r||l<0||r<0||r>=n||l>=n){
		return 0;
	}
	//cout<<l<<' '<<r<<endl;
	ll ans=INF;
	if(dp[l][r]!=-1){
		return dp[l][r];
	}
	if(l==r){
		return dp[l][r]=min(min(1ll*arr[l],1ll*(dis-arr[l]))*2ll,dis);
	}
	if(r-l+1<=k){
		//cout<<min(arr[l],dis-arr[l])*2ll<<endl;
		ans=min(min(1ll*arr[r],1ll*(dis-arr[l]))*2ll,dis);
	}
	for(int i=l;i<=r;i++){
		if(i+1<=r){
			ans=min(ans,funk(n,k,dis,arr,l,i)+funk(n,k,dis,arr,i+1,r));
		}
	}
	//cout<<ans<<endl;
	return dp[l][r]=ans;
}
long long delivery(int n, int k, int dis, int arr[]) {
    ll ans=INF;
    sort(arr,arr+n);
    if(n<=10){
    	memset(dp,-1,sizeof(dp));
    	return funk(n,k,dis,arr,0,n-1);
	}
    for(int i=0;i<n;i++){
    	if(i<k){
    		l[i]=min(1ll*dis,arr[i]*2ll);
		}
		else{
			l[i]=l[(i/k)*k-1]+min(1ll*dis,arr[i]*2ll);
		}
	}
	ll say=0,ind=0;
    for(int i=n-1;i>=0;i--){
    	if(say<k){
    		r[i]=min(1ll*dis,(dis-arr[i])*2ll);
		}
		else{
			r[i]=r[n-((say/k)*k)]+min(1ll*dis,(dis-arr[i])*2ll);
		}
		say++;
	}
	ans=min(r[0],l[n-1]);
	r[n]=0;
    for(int i=0;i<n-1;i++){
    	ans=min(l[i]+r[i+1],ans);
	}
	return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int funk(int, int, long long int, int*, int, int)':
boxes.cpp:19:48: warning: declaration of 'r' shadows a global declaration [-Wshadow]
   19 | ll funk(int n,int k,ll dis,int arr[],int l,int r){
      |                                            ~~~~^
boxes.cpp:17:11: note: shadowed declaration is here
   17 | ll l[mxn],r[mxn];
      |           ^
boxes.cpp:19:42: warning: declaration of 'l' shadows a global declaration [-Wshadow]
   19 | ll funk(int n,int k,ll dis,int arr[],int l,int r){
      |                                      ~~~~^
boxes.cpp:17:4: note: shadowed declaration is here
   17 | ll l[mxn],r[mxn];
      |    ^
boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:58:11: warning: unused variable 'ind' [-Wunused-variable]
   58 |  ll say=0,ind=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...