Submission #1136134

#TimeUsernameProblemLanguageResultExecution timeMemory
1136134Math4Life20209월 (APIO24_september)C++20
Compilation error
0 ms0 KiB
//testing online c++ -> c converters
#include <cstdio.h>
#include <cstdlib.h>

typedef long long ll;
typedef __int128 lll;

const lll p1 = 144403552893599;
const lll a1 = 981372590237;
const lll p2 = 270969106631203;
const lll a2 = 898374183250;

int solve(int N, int M, int* F, int** S1) {
    int** S = (int**)malloc(M * sizeof(int*));
    for (int i = 0; i < M; i++) {
        S[i] = (int*)malloc((N + 1) * sizeof(int));
        for (int j = 0; j < N; j++) {
            S[i][j] = S1[i][j];
        }
        S[i][N] = 0;
    }

    lll* hsh1 = (lll*)malloc(M * sizeof(lll));
    lll* hsh2 = (lll*)malloc(M * sizeof(lll));
    for (int i = 0; i < M; i++) {
        hsh1[i] = 1;
        hsh2[i] = 1;
    }

    ll* stops = (ll*)malloc((N + 1) * sizeof(ll));
    stops[0] = 0;
    int stop_count = 1;

    for (ll i = 0; i < N; i++) {
        for (ll j = 0; j < M; j++) {
            hsh1[j] = (hsh1[j] * (a1 + S[j][i])) % p1;
            hsh2[j] = (hsh2[j] * (a2 + S[j][i])) % p2;
        }
        int split = 1;
        for (ll j = 0; j < M; j++) {
            split = split && (hsh1[j] == hsh1[0]) && (hsh2[j] == hsh2[0]);
        }
        if (split) {
            stops[stop_count++] = i + 1;
            for (ll j = 0; j < M; j++) {
                hsh1[j] = 1;
                hsh2[j] = 1;
            }
        }
    }

    ll* kv = (ll*)malloc(N * sizeof(ll));
    ll kind = 0;
    ll* delactive = (ll*)malloc(N * sizeof(ll));
    for (ll i = 0; i < N; i++) {
        delactive[i] = 0;
        if (stops[kind + 1] <= i) {
            kind++;
        }
        kv[S[0][i]] = kind;
    }

    for (ll i = 1; i < N; i++) {
        ll x = kv[i];
        ll y = kv[F[i]];
        if (y < x) {
            delactive[y]++;
            delactive[x]--;
        }
    }

    ll nact = 0;
    ll ans = 0;
    for (ll i = 0; i < (stop_count - 1); i++) {
        nact += delactive[i];
        if (nact == 0) {
            ans++;
        }
    }

    free(hsh1);
    free(hsh2);
    free(kv);
    free(delactive);
    for (int i = 0; i < M; i++) {
        free(S[i]);
    }
    free(S);
    free(stops);

    return (ans - 1);
}

Compilation message (stderr)

september.cpp:2:10: fatal error: cstdio.h: No such file or directory
    2 | #include <cstdio.h>
      |          ^~~~~~~~~~
compilation terminated.