Submission #639038

#TimeUsernameProblemLanguageResultExecution timeMemory
639038inksamuraiHokej (COCI17_hokej)C++17
72 / 120
320 ms65536 KiB
#include <bits/stdc++.h> #define int ll using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define rng(i,c,n) for(int i=c;i<n;i++) #define per(i,n) for(int i=n-1;i>=0;i--) #define fi first #define se second #define pb push_back #define sz(a) (int)a.size() #define vec(...) vector<__VA_ARGS__> #define _3RhsN1z ios::sync_with_stdio(0),cin.tie(0) typedef long long ll; using pii=pair<int,int>; using vi=vector<int>; void print(){cout<<'\n';} template<class h,class...t> void print(const h&v,const t&...u){cout<<v<<' ',print(u...);} // e signed main(){ _3RhsN1z; int m,n; cin>>m>>n; using T=pair<int,pii>; vec(T) a(n); vec(pii) ina(n); rep(i,n){ cin>>a[i].fi>>a[i].se.fi; a[i].se.se=i; ina[i]={a[i].fi,a[i].se.fi}; } sort(a.begin(),a.end()); const int si=6; int k=0; vec(vec(pii)) rbts(si); while(k<si){ int now=0; while(now<m){ assert(sz(a)); T u=a.back(); a.pop_back(); int need=min(u.se.fi,m-now); assert(need>0); rbts[k].pb({need,u.se.se}); u.se.fi-=need; now+=need; if(u.se.fi>0){ assert(now==m); a.pb(u); } } sort(a.begin(),a.end()); k+=1; } int res=0; rep(i,si){ for(auto p:rbts[i]){ res+=p.fi*ina[p.se].fi; } } cout<<res<<"\n"; rep(i,si){ cout<<rbts[i][0].se+1<<" "; } cout<<"\n"; vec(T) pns; rep(i,si){ int tm=0; rep(j,sz(rbts[i])-1){ tm+=rbts[i][j].fi; pns.pb({tm,{rbts[i][j].se,rbts[i][j+1].se}}); } } sort(pns.begin(),pns.end()); cout<<sz(pns)<<"\n"; for(auto tp:pns){ cout<<tp.fi<<" "<<tp.se.fi+1<<" "<<tp.se.se+1<<"\n"; } //checker { vec(vi) tq(m); rep(i,si){ int tm=0; rep(j,sz(rbts[i])){ rng(k,tm,tm+rbts[i][j].fi){ tq[k].pb(rbts[i][j].se); } tm+=rbts[i][j].fi; } } // for(int i=0;i<m;i++){ // assert(sz(set<int>(tq[i].begin(),tq[i].end()))==si); // } } }
#Verdict Execution timeMemoryGrader output
Fetching results...