답안 #379764

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
379764 2021-03-19T08:55:54 Z FatihSolak Hokej (COCI17_hokej) C++17
120 / 120
156 ms 6620 KB
#include <bits/stdc++.h>
#define N 200005
using namespace std;
int st[6];
struct player{
    int k,t,pos;
    bool operator < (player other){
        return k < other.k;
    }
};
struct ch{
    int time,a,b;
    bool operator < (ch other){
        return time < other.time;
    }
};
vector<player> v;
void solve(){
    int m,n;
    cin >> m >> n;
    for(int i=1;i<=n;i++){
        int k,t;
        cin >> k >> t;
        v.push_back({k,t,i});
    }
    sort(v.rbegin(),v.rend());
    long long ans = 0;
    /*for(auto u:v){
        cout << u.k << " " <<u.t << " " << u.pos << endl;
    }*/
    vector<ch> sub;
    int col = 0 ,last = 5;
    int cnt = 0;
    while(col <= last){
        int z = m;
        int nw = -1;
        while(z){
            auto &now = v[cnt];
            if(z!=m && now.t == m && last != col){
                st[last] = now.pos;
                ans += 1ll*now.t * now.k;
                last--;
                cnt++;
                continue;
            }
            int can = min(z,now.t);
            now.t -= can;
            ans += 1ll*now.k*can;
            if(!now.t)cnt++;
            if(nw == -1){
                st[col] = now.pos;
            } 
            else{
                sub.push_back({m-z,nw,now.pos});
            }
            z -= can;
            nw = now.pos;
        }
        col++;
    }
    cout << ans << endl;
    for(int i=0;i<6;i++){
        cout << st[i] << " ";
    }
    cout << endl<< sub.size()<<endl;
    sort(sub.begin(),sub.end());
    for(auto u:sub){
        cout << u.time << " " << u.a << " " << u.b << endl;
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    #ifdef Local
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    #ifdef Local
    cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds ";
    #endif
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 2 ms 492 KB Output is correct
3 Correct 7 ms 812 KB Output is correct
4 Correct 1 ms 364 KB Output is correct
5 Correct 6 ms 620 KB Output is correct
6 Correct 4 ms 492 KB Output is correct
7 Correct 3 ms 620 KB Output is correct
8 Correct 42 ms 2020 KB Output is correct
9 Correct 151 ms 6620 KB Output is correct
10 Correct 156 ms 6620 KB Output is correct