Submission #493900

#TimeUsernameProblemLanguageResultExecution timeMemory
493900leakedDevil's Share (RMI19_devil)C++14
0 / 100
117 ms1360 KiB
#include <bits/stdc++.h> #define f first #define s second #define m_p make_pair #define vec vector #define pb push_back #define sz(x) (int)(x).size() #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define fast_rmi ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); //#pragma GCC optimize("Ofast") using namespace std; typedef pair<int,int> pii; int c[10]; string find_max(string ans,int k){ string me=ans.substr(0,k); for(int i=0;i+k-1<sz(ans);i++){ string w=ans.substr(i,k); me=max(me,w); } return me; } string solve(int k){ string suf; string ans; int how=0; int r=-1; for(int d=9;d>=0;d--){ how+=c[d]; if(how>=k){ r=d; break; } } for(int j=r+1;j<=9;j++){ while(c[j]--) suf+=char('0'+j); } /// control points is r vec<vec<int>> vc(c[r],vec<int>()); for(int i=0;i<c[r];i++){ vc[i].pb(r); } int n=c[r]; vec<int> prior(n); for(int i=0;i<n-1;i++){ prior[i]=(sz(vc[i])==1?0:1); } vec<int>p(n); iota(all(p),0); for(int d=0;d<r;d++){ int cnt=c[d]/n; vec<bool>placed(n,0); while(cnt--){ for(auto &z : vc) z.pb(d); } c[d]%=n; for(int i=n-1;i>=0 && c[d];i--,c[d]--) vc[p[i]].pb(d),placed[p[i]]=1; vec<int> np=p; vec<int>nprior(n); sort(all(np),[&](int i,int j){ return (prior[i]!=prior[j]?prior[i]<prior[j]:placed[i]>placed[j]); }); nprior[np[0]]=0; for(int i=1;i<n;i++){ int f=np[i],s=np[i-1]; nprior[f]=nprior[s]; if(prior[f]==prior[s] && placed[f]==placed[s]) continue; nprior[f]++; } p=np; prior=nprior; } // cout<<"CONTROL "<<r<<endl; for(auto &z : vc){ // reverse(all(z)); for(auto &q : z) ans+=char('0'+q); } // cout<<"ANSWER "<<find_max(ans+suf,k)<<'\n'; return ans+suf; } signed main(){ fast_rmi; int q; cin>>q; while(q--){ int k; cin>>k; c[0]=0; for(int i=1;i<10;i++) cin>>c[i]; // cout<<"W "<<endl; cout<<solve(k)<<'\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...