Submission #1363369

#TimeUsernameProblemLanguageResultExecution timeMemory
1363369xorshiftSeptember (APIO24_september)C++20
100 / 100
112 ms12716 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using vint = vector<int>;
using vll = vector<ll>;
using pint = pair<int, int>;
using vpint = vector<pint>;

#define fi first
#define se second 
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rrep(i, n) for (int i = (n)-1; i >= 0; i--)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define RFOR(i, a, b) for (int i = (a)-1; i >= (b); i--)

int solve(int N, int M, vint F, vector<vint> S) {
	vector<vint> rS(M, vint(N));
    rep(i, M) {
        auto& v = S[i]; auto& rv = rS[i];
        rep(j, N-1) rv[v[j]] = j;
    }
    vector<vint> rF(N);
    rep(i, N) rF[i].push_back(i);
    rep(i, N) if (i != 0) rF[F[i]].push_back(i);

    int K = 0;
    int max_pos = 0;
    rep(i, N-1) {
        rep(j, M) {
            int cv = S[j][i];
            rep(k, M) {
                for (auto& c: rF[cv]) {
                    int c_pos = rS[k][c];
                    max_pos = max(max_pos, c_pos);
                }
            }
        }
        if (max_pos == i) K++;
    }
    return K;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...