Submission #234426

#TimeUsernameProblemLanguageResultExecution timeMemory
234426ne4eHbKaHokej (COCI17_hokej)C++17
72 / 120
181 ms18424 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

template<typename t> inline void umin(t &a, t b) {a = min(a, b);}
template<typename t> inline void umax(t &a, t b) {a = max(a, b);}

#define re return

mt19937 rnd(chrono::system_clock().now().time_since_epoch().count());

int rint(int v) {re rnd() % v;}

int main() {
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    
    int m, n;
    cin >> m >> n;
    
    int I[n], K[n];
    for(int i = 0; i < n; ++i)
        cin >> K[i] >> I[i];
    
    int f[m][6];
    
    int p[n];
    for(int i = 0; i < n; ++i) p[i] = i;
    sort(p, p + n, [&] (const int &a, const int &b) {return K[a] > K[b];});
    
    ll ans = 0;
    
    int x = -1, y = 0;
    for(int pt = 0; pt < n; ++pt) {
        int i = p[pt];
        for(int it = I[i]; it--; ) {
            if(++x == m) ++y, x = 0;
            if(y == 6) goto final;
            f[x][y] = i + 1;
            ans += K[i];
        }
    }
    
    final:;
    
    cout << ans << endl;
    
    for(int i = 0; i < 6; ++i) cout << f[0][i] << ' ';
    cout << endl;
    
    vector< tuple<int, int, int> > v;
    for(int i = 1; i < m; ++i) for(int j = 0; j < 6; ++j) 
        if(f[i][j] != f[i - 1][j]) v.emplace_back(i, f[i - 1][j], f[i][j]);

    cout << v.size() << endl;
    for(auto c : v) {
        int x, a, b;
        tie(x, a, b) = c;
        cout << x << ' ' << a << ' ' << b << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...