제출 #444527

#제출 시각아이디문제언어결과실행 시간메모리
444527KhizriBoxes with souvenirs (IOI15_boxes)C++17
20 / 100
1 ms280 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" ll funk(int n,int k,ll dis,int arr[],int l,int r){ //cout<<l<<' '<<r<<endl; if(r-l<=k){ //cout<<min(arr[l],dis-arr[l])*2ll<<endl; return min(1ll*arr[r],1ll*(dis-arr[l]))*2ll; } ll ans=INF; 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 ans; } long long delivery(int n, int k, int l, int arr[]) { ll ans=0; if(k==1){ for(int i=0;i<n;i++){ ans+=min(arr[i],l-arr[i])*2; } return ans; } if(k==n){ sort(arr,arr+n); ans=min({arr[n-1]*2,(l-arr[0])*2,l}); arr[n]=l; for(int i=0;i<n;i++){ ans=min(ans,arr[i]*2ll+(l-arr[i+1])*2ll); } return ans; } sort(arr,arr+n); ans=funk(n,k,l,arr,0,n-1); return 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...