Submission #837587

#TimeUsernameProblemLanguageResultExecution timeMemory
837587AntekbCookies (JOI23_cookies)C++17
7 / 100
1088 ms4684 KiB
#include<bits/stdc++.h> #define st first #define nd second #define all(x) (x).begin(), (x).end() #define pb push_back #define eb emplace_back #define pp pop_back #define mp make_pair using namespace std; using pii = pair<int, int>; using ll = long long; using vi = vector<int>; using vii = vector<pii>; using ld = long double; void debug(){cerr<<"\n";} template<typename H, typename... T> void debug(H h, T... t){ cerr<<h; if(sizeof...(t)){ cerr<<", "; } debug(t...); } #define deb(x...) cerr<<#x<<" = ";debug(x); mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); const int N=15005; int opt[N], par[N], tim[N], ile[N], str[N]; int main(){ int n, m; cin>>n; vii V(n); int M=0; for(int i=0;i<n; i++){ cin>>V[i].st; M=max(M, V[i].st); for(int j=0; j<V[i].st; j++)ile[j]++; V[i].nd=i+1; } sort(all(V)); int s=0; for(int i=0; i<M; i++){ for(int j=s+1; j<=s+ile[M-i-1]; j++){ tim[j]=i+1; } s+=ile[M-i-1]; } for(int i=1; i<=s; i++){ opt[i]=-1e9; //deb(i, tim[i]); } cin>>m; vi V2(m); for(int &i:V2){ cin>>i; } sort(all(V2)); opt[0]=0; for(int c:V2){ for(int i=c; i<=s; i++){ if(opt[i]<min(opt[i-c]+1, tim[i])){ opt[i]=min(opt[i-c]+1, tim[i]); par[i]=c; str[i]=str[i-c]+max(opt[i-c]+1-tim[i], 0); } else if(opt[i]==min(opt[i-c]+1, tim[i]) && str[i-c]+max(opt[i-c]+1-tim[i], 0)<str[i]){ str[i]=str[i-c]+max(opt[i-c]+1-tim[i], 0); par[i]=c; } } for(int i=0; i<=s; i++){deb(i, tim[i], opt[i]);} } if(opt[s]<M){ cout<<-1; return 0; } vi siz; while(s){ siz.pb(par[s]); s-=par[s]; } cout<<siz.size()<<"\n"; //for(int i:siz)cout<<i<<" "; //return 0; priority_queue<pair<int, int> > Q; for(auto &i:V)Q.push(i); for(int j:siz){ cout<<j<<" "; vii todo; for(int i=0; i<j; i++){ todo.pb(Q.top()); Q.pop(); cout<<todo.back().nd<<" "; todo.back().st--; } cout<<"\n"; for(auto i:todo)Q.push(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...