제출 #1151684

#제출 시각아이디문제언어결과실행 시간메모리
1151684dobri_okeKitchen (BOI19_kitchen)C++20
0 / 100
0 ms328 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; int a[n+1], b[m+1]; int sum=0; multiset < int > st; for(int i=1;i<=n;i++){ cin >> a[i]; sum+=a[i];} for(int i=1;i<=m;i++){ cin >> b[i]; st.insert(b[i]);} if((k>m) || (*st.begin()<k)){ cout << "Impossible"; return 0; } int ans=0; bool b2=0; if(k==1){ if(b[1]-sum<0) cout << "Impossible"; else cout << b[1]-sum; return 0; } st.clear(); st.insert(b[1]-k); st.insert(b[2]-k); for(int i=1;i<=n;i++){ while(a[i]>0){ int g=*st.rbegin(), h=*st.begin(); if(g==0){ b2=1; break; } st.erase(g); st.erase(h); st.insert(h); st.insert(g-1); a[i]--; } if(b2==1) break; } if(b2==1) cout << "Impossible"; cout << *st.rbegin(); // else (*st.rbegin())+(*st.begin()); }
#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...