Submission #892000

#TimeUsernameProblemLanguageResultExecution timeMemory
892000alexander707070Cookies (JOI23_cookies)C++14
63 / 100
1080 ms1005188 KiB
#include<bits/stdc++.h> #define MAXN 3007 using namespace std; int n,m,pt,total; int a[MAXN],b[MAXN],ind[MAXN]; vector< pair<int,int> > v; vector< vector<int> > w; int maxs[MAXN],br; unordered_map<int,int> dp[MAXN][MAXN]; int ff(int pos,int box,int sum){ if(sum<0 or box<1)return 1000000; if(sum==0)return 0; if(dp[box][sum][pos]!=0)return dp[box][sum][pos]; dp[box][sum][pos]=ff(pos,box-1,sum); if(total-sum+b[box]<=maxs[pos] and sum-b[box]>=0){ dp[box][sum][pos]=min(dp[box][sum][pos],ff(pos+1,box,sum-b[box])+1); } return dp[box][sum][pos]; } void solve(int pos,int box,int sum){ if(sum==0)return; if(ff(pos,box,sum)==ff(pos,box-1,sum)){ solve(pos,box-1,sum); return; } br++; v.push_back({b[box],br}); solve(pos+1,box,sum-b[box]); } bool cmp(int x,int y){ return a[x]>a[y]; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; total+=a[i]; ind[i]=i; } for(int i=1;i<=total;i++){ for(int f=1;f<=n;f++){ maxs[i]+=min(a[f],i); } } cin>>m; for(int i=1;i<=m;i++){ cin>>b[i]; } if(ff(1,m,total)>total){ cout<<"-1\n"; return 0; } solve(1,m,total); w.resize(int(v.size())); sort(ind+1,ind+n+1,cmp); for(int i=1;i<=n;i++){ sort(v.begin(),v.end()); reverse(v.begin(),v.end()); for(int f=0;f<a[ind[i]];f++){ v[f].first--; w[v[f].second-1].push_back(ind[i]); } } cout<<w.size()<<"\n"; for(int i=0;i<w.size();i++){ cout<<w[i].size()<<" "; for(int f:w[i])cout<<f<<" "; cout<<"\n"; } return 0; }

Compilation message (stderr)

cookies.cpp: In function 'int main()':
cookies.cpp:89:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |     for(int i=0;i<w.size();i++){
      |                 ~^~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...