Submission #234480

# Submission time Handle Problem Language Result Execution time Memory
234480 2020-05-24T09:46:27 Z kartel Hokej (COCI17_hokej) C++14
84 / 120
182 ms 8568 KB
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#define in(x) freopen(x, "r", stdin)
#define out(x) freopen(x, "w", stdout)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-O3")
#define F first
#define S second
#define pb push_back
#define N +500500
#define M ll(1e9 + 7)
#define sz(x) (int)x.size()
#define re return
#define oo ll(1e18)
#define el '\n'
#define pii pair <int, int>
using namespace std;
//using namespace __gnu_pbds;
//typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set;
typedef long long ll;
typedef long double ld;

vector <pair <int, pii> > ans;
int k[N], l[N], nm[N], cur, i, t, ti, tim, ft[N], n, j, ost[N];

bool cmp(int i, int j)
{
    return k[i] > k[j];
}

bool CMP(int i, int j)
{
    return l[i] > l[j];
}


int main()
{
    srand(time(0));
    ios_base::sync_with_stdio(0);
    iostream::sync_with_stdio(0);
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);

//    in("input.txt");
//    out("output.txt");

    cin >> tim >> n;
    for (i = 1; i <= n; i++) cin >> k[i] >> l[i], nm[i] = i, ost[i] = l[i];

    sort(nm + 1, nm + 1 + n, cmp);

    cur = 0;
    j = 1;

    for (ti = 1; ti <= 6; ti++)
    {
        int t = 0;

        while (j <= n && t < tim)
        {
            i = nm[j];
            int mx = min(tim - t, ost[i]);

            cur += mx * k[i];

            t += mx;

            ost[i] -= mx;

            if (ost[i] == 0)
                j++;
        }
    }

    if (ost[nm[j]] != 0) l[nm[j]] -= ost[nm[j]];

    sort(nm + 1, nm + 1 + j, CMP);

    for (i = 1; i <= n; i++) ost[i] = l[i];

    j = 1;

    for (ti = 1; ti <= 6; ti++)
    {
        int lst = -1;
        int t = 0;

        while (t < tim)
        {
            i = nm[j];
            int mx = min(tim - t, ost[i]);

//            cur += mx * k[i];
            ost[i] -= mx;

            if (lst == -1) ft[ti] = i;
                      else ans.pb({t, {lst, i}});

            t += mx;

            lst = i;

            if (ost[i] == 0)
                j++;
        }
    }

    sort(ans.begin(), ans.end());

    cout << cur << el;
    for (i = 1; i <= 6; i++) cout << ft[i] << " ";cout << el;

    cout << sz(ans) << el;
    for (auto x : ans) cout << x.F << " " << x.S.F << " " << x.S.S << el;


}

Compilation message

hokej.cpp: In function 'int main()':
hokej.cpp:115:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
     for (i = 1; i <= 6; i++) cout << ft[i] << " ";cout << el;
     ^~~
hokej.cpp:115:51: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
     for (i = 1; i <= 6; i++) cout << ft[i] << " ";cout << el;
                                                   ^~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 6 ms 512 KB Output is correct
3 Failed 12 ms 768 KB the answer doesn't match with the value Z
4 Correct 5 ms 384 KB Output is correct
5 Correct 8 ms 640 KB Output is correct
6 Correct 6 ms 512 KB Output is correct
7 Correct 7 ms 512 KB Output is correct
8 Correct 35 ms 2172 KB Output is correct
9 Failed 179 ms 8528 KB the answer doesn't match with the value Z
10 Failed 182 ms 8568 KB the answer doesn't match with the value Z