Submission #487670

#TimeUsernameProblemLanguageResultExecution timeMemory
487670Koosha_mvKitchen (BOI19_kitchen)C++14
100 / 100
37 ms732 KiB
#include <bits/stdc++.h> using namespace std; #define erorp(x) cout<<#x<<"={"<<(x.F)<<" , "<<x.S<<"}"<<endl #define print(v,r) f(i,0,r) cout<<v[i]<<" "; cout<<endl #define eror(x) cout<<#x<<'='<<(x)<<endl #define f_(i,a,b) for(int i=a;i>=b;i--) #define f(i,a,b) for(int i=a;i<b;i++) #define nb(x) __builtin_popcount(x) #define maxm(a,b) a=max(a,b) #define minm(a,b) a=min(a,b) #define Add(x,y) x=(x+y)%mod #define lst(x) x[x.size()-1] #define sz(x) int(x.size()) #define mp make_pair #define ll long long #define pb push_back #define S second #define F first const int N=330; int n,m,k,sum,dp[N*N]; int main(){ cin>>n>>m>>k; f(i,0,n){ int x; cin>>x; sum+=x; if(x<k) return cout<<"Impossible",0; } dp[0]=0; f(i,1,N*N) dp[i]=-N*N; f(i,0,m){ int x; cin>>x; f_(i,N*N-1,0){ if(i-x>=0){ maxm(dp[i],dp[i-x]+min(n,x)); } } } f(i,sum,N*N){ if(dp[i]>=n*k){ return cout<<i-sum,0; } } cout<<"Impossible"; }
#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...