Submission #958136

#TimeUsernameProblemLanguageResultExecution timeMemory
958136ezzzayKitchen (BOI19_kitchen)C++14
0 / 100
1 ms440 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=1;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+1]>=n){
                    t=min(t,(t+b[j+1])%n);
                    cnt++;
                }
                else{
                    t+=b[j+1];
                }
                tmp+=b[j+1];
                
            }
        }
        if(cnt<k or tmp<s)continue;
        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...