Submission #958144

#TimeUsernameProblemLanguageResultExecution timeMemory
958144ezzzayKitchen (BOI19_kitchen)C++14
0 / 100
1 ms348 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define ff first
#define ss second
const int N=550;
int a[N];
int b[N];
signed main(){
    int n,m,k;
    cin>>n>>m>>k;
    int s=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s+=a[i];
    }
    for(int i=0;i<m;i++)cin>>b[i];
    
    for(int i=1;i<=n;i++){
        if(a[i]<k){
            cout<<"IMPOSSIBLE";
            return 0;
        }
    }
    int ans=1e9;
    
    for(int i=0;i<(1<<m);i++){
        int tmp=0;
        int t=0;
        int cnt=0;
        for(int j=0;j<m;j++){
            if(i & (1<<j)){
                if(t+b[j]>=n){
                    t=min(t,(t+b[j])%n);
                    cnt++;
                }
                else{
                    t+=b[j];
                }
                tmp+=b[j];
                
            }
        }
        if(tmp>=s and cnt>=k)ans=min(ans,tmp-s);
        
    }
    
    if(ans==1e9){
        cout<<"IMPOSSIBLE";
    }
    else cout<<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...