# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1048676 | Plurm | 9월 (APIO24_september) | C++17 | 142 ms | 23968 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "september.h"
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> g;
vector<vector<int>> mxn;
vector<vector<int>> bck;
void dfs(int u, int p = -1){
for(int v : g[u]) dfs(v);
for(int i = 0; i < bck.size(); i++){
mxn[i][u] = bck[i][u];
for(int v : g[u]){
mxn[i][u] = max(mxn[i][u], mxn[i][v]);
}
}
}
vector<int> rndperm;
const int MOD = 1e9+7;
class HashedSet{
public:
int a, b;
HashedSet() : a(0), b(1) {}
void insert(int x){
a += rndperm[x];
a %= MOD;
b = 1ll * b * rndperm[x] % MOD;
}
friend bool operator!=(const HashedSet& h1, const HashedSet& h2){
return h1.a != h2.a || h1.b != h2.b;
}
};
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
if(rndperm.empty()){
rndperm.resize(100005);
default_random_engine dre;
uniform_int_distribution<int> uid(1, 1000000000);
for(int i = 0; i <= 100000; i++) rndperm[i] = uid(dre);
}
g.resize(N);
for(int i = 1; i < N; i++){
g[F[i]].push_back(i);
}
bck.resize(M);
mxn.resize(M);
for(int i = 0; i < M; i++){
bck[i].resize(N);
mxn[i].resize(N);
for(int j = 0; j < N-1; j++){
bck[i][S[i][j]] = j;
}
}
dfs(0);
int k = 0;
int l = 0;
while(l < N-1){
// left: l
vector<HashedSet> ss(M);
int mnr = l-1;
int i = l;
bool ok = true;
do{
mnr++;
while(i <= mnr){
for(int j = 0; j < M; j++){
ss[j].insert(S[j][i]);
mnr = max(mnr, mxn[j][S[j][i]]);
}
i++;
}
for(int j = 1; j < M; j++) if(ss[j] != ss[0]) ok = false;
}while(!ok);
l = mnr+1;
k++;
}
g.clear();
bck.clear();
mxn.clear();
return k;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |