Submission #1346180

#TimeUsernameProblemLanguageResultExecution timeMemory
1346180Muhammad_AneeqHokej (COCI17_hokej)C++20
120 / 120
124 ms28608 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
inline void solve()
{
    int n,m;
    cin>>m>>n;
    vector<vector<int>>a;
    for (int i=0;i<n;i++)
    {
        int qu,in;
        cin>>qu>>in;
        in=min(in,m);
        a.push_back({qu,in,i+1});
    }
    sort(begin(a),end(a));
    reverse(begin(a),end(a));
    int ans=0;
    int req=m*6;
    vector<pair<int,int>>pls;
    for (auto vec:a)
    {
        int qu=vec[0],in=vec[1],ind=vec[2];
        int f=min(req,in);
        ans+=(f*qu);
        pls.push_back({f,ind});
        req-=f;
        if (req==0)
            break;
    }
    int mx[6]={};
    int pr[6]={};
    for (int i=0;i<6;i++)
        pr[i]=-1;
    vector<int>pre;
    vector<vector<int>>subs;
    sort(begin(pls),end(pls));
    reverse(begin(pls),end(pls));
    vector<pair<int,int>>plc[6]={};
    int cur=0,ind=0;
    for (auto& [i,j]:pls)
    {
        if (cur+i>m)
        {
            plc[ind].push_back({j,m-cur});
            i-=(m-cur);
            cur=0;
            ind++;
        }
        plc[ind].push_back({j,i});
        cur+=i;
        // cout<<j<<' '<<i<<' '<<ind<<endl;
        if (cur==m)
        {
            cur=0;
            ind++;
        }
    }   
    for (int i=0;i<6;i++)
    {
        pre.push_back(plc[i][0].first);
        int sm=plc[i][0].second;
        for (int j=1;j<plc[i].size();j++)
        {
            subs.push_back({sm,plc[i][j-1].first,plc[i][j].first});
            sm+=plc[i][j].second;
        }
    }
    cout<<ans<<endl;
    for (auto i:pre)
        cout<<i<<' ';
    cout<<endl;
    sort(begin(subs),end(subs));
    cout<<subs.size()<<endl;
    for (auto vec:subs)
    {
        for (auto j:vec)
            cout<<j<<' ';
        cout<<endl;
    }
}
signed main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int t=1;
    for (int i=1;i<=t;i++)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...