답안 #234479

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
234479 2020-05-24T09:45:36 Z kartel Hokej (COCI17_hokej) C++14
84 / 120
72 ms 12152 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 +300500
#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;
                                                   ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 6 ms 512 KB Output is correct
3 Failed 12 ms 1024 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 640 KB Output is correct
8 Correct 34 ms 2936 KB Output is correct
9 Runtime error 72 ms 12152 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 71 ms 12152 KB Execution killed with signal 11 (could be triggered by violating memory limits)