Submission #892019

#TimeUsernameProblemLanguageResultExecution timeMemory
892019alexander707070Cookies (JOI23_cookies)C++14
0 / 100
484 ms1005140 KiB
#include<bits/stdc++.h> #pragma GCC optimize ("O3") #pragma GCC target ("sse4") #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 states; void calc_dp(){ for(int pos=total/m;pos>=1;pos--){ for(int box=1;box<=m;box++){ for(int sum=max(0,total-(pos-1)*b[m]);sum<=total-(pos-1)*b[box];sum++){ if(sum==0){ dp[box][sum][pos]=0; continue; } dp[box][sum][pos]=1000000; if(box>1)dp[box][sum][pos]=dp[box-1][sum][pos]; if(total-sum+b[box]<=maxs[pos] and sum-b[box]>=0){ dp[box][sum][pos]=min(dp[box][sum][pos],dp[box][sum-b[box]][pos+1]+1); } } } } } void solve(int pos,int box,int sum){ if(sum==0)return; if(box>1 and dp[box][sum][pos]==dp[box-1][sum][pos]){ 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]; } calc_dp(); if(dp[m][total][1]>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:102:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  102 |     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...