Submission #1214216

#TimeUsernameProblemLanguageResultExecution timeMemory
1214216emptypringlescanCookies (JOI23_cookies)C++17
6 / 100
2 ms328 KiB
#include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); int n,m; cin >> n; int arr[n]; bool st1=true; for(int i=0; i<n; i++){ cin >> arr[i]; if(arr[i]!=1) st1=false; } cin >> m; vector<int> brr(m); for(int i=0; i<m; i++) cin >> brr[i]; if(st1){ bitset<505> bs[n+1]; bs[0][0]=1; int num=-1; for(int i=1; i<=n; i++){ for(int j=0; j<m; j++) bs[i]|=bs[i-1]<<brr[j]; if(bs[i][n]){ num=i; break; } } if(num==-1){ cout << -1; return 0; } else{ vector<int> ans; int cur=n; for(int i=num; i>0; i--){ for(int j=0; j<m; j++){ if(bs[i-1][cur-brr[j]]){ ans.push_back(brr[j]); cur-=brr[j]; break; } } } cout << ans.size() << '\n'; cur=1; for(int i:ans){ cout << i << ' '; for(int j=0; j<i; j++){ cout << cur << ' '; cur++; } cout << '\n'; } } } else if(m==1){ int tot=0; for(int i=0; i<n; i++) tot+=arr[i]; if(tot%brr[0]){ cout << -1; return 0; } set<pair<int,int> > got; for(int i=0; i<n; i++) got.insert({arr[i],i+1}); vector<vector<int> > ans; for(int i=0; i<tot/brr[0]; i++){ if((int)got.size()<brr[0]){ cout << -1; return 0; } ans.push_back({}); vector<pair<int,int> > nxt; for(int j=0; j<brr[0]; j++){ pair<int,int> yay=*(--got.end()); ans.back().push_back(yay.second); yay.first--; if(yay.first) nxt.push_back(yay); got.erase(--got.end()); } for(auto i:nxt) got.insert(i); } cout << tot/brr[0] << '\n'; for(auto i:ans){ for(int j:i) cout << j << ' '; cout << '\n'; } } }
#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...