Submission #1151829

#TimeUsernameProblemLanguageResultExecution timeMemory
1151829dobri_okeKitchen (BOI19_kitchen)C++20
31 / 100
108 ms432 KiB
//#pragma GCC target ("avx2") //#pragma GCC optimize ("Ofast") #include <bits/stdc++.h> using namespace std; #define int long long #define F first #define S second #define pb push_back const int N = 1e3+100, NN=26, mod=1e9+7; //int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } //int lcm(int a, int b) { return a / gcd(a, b) * b; } //int binpow(int a,int b){if(!b)return 1; if(b&1)return a*binpow(a,b-1)%mod; int x=binpow(a,b/2); return x*x%mod;} signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m, k; cin >> n >> m >> k; bool b3 = 0; int a[n], b[m], sum = 0, ans = 1e18; for(int i = 0 ; i < n ; i++){ cin >> a[i]; if(a[i] < k) b3 = 1; sum += a[i]; } bool b2=0; for(int i = 0 ; i < m ; i++) cin >> b[i]; if(m < k || b3 == 1){ cout << "Impossible"; return 0; } sort(b, b+m); for(int mask = 0 ; mask < (1<<m) ; mask++){ vector < int > v; for(int i = 0 ; i < m ; i++){ if((mask>>i) & 1) v.pb(b[i]); } if(v.size() < k) continue; for(int i = 1; i <= n; i++){ int g=v.size()-1, kk=k; while(kk--){ v[g]--; g--; } sort(v.begin(), v.end()); } int sum2=0; for(auto to : v) sum2+=to; if(sum2>=sum-(n*k) && v[0]>=0){ b2=1; ans=min(ans, sum2-(sum-(n*k))); } } if(b2==1) cout << ans; else 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...