제출 #444846

#제출 시각아이디문제언어결과실행 시간메모리
444846Khizri선물상자 (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; }

컴파일 시 표준 에러 (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...