제출 #1194141

#제출 시각아이디문제언어결과실행 시간메모리
1194141alex_20089월 (APIO24_september)C++20
100 / 100
94 ms10944 KiB
#include "september.h"
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
#include <map>
#include <set>
#include <unordered_set>
#include <cassert>
#include <deque>
#include <queue>
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;
vector <vector<int>> G;
int uncert[10];
bool marked[10][N];
int diff[10];
int solve(int n, int m, vector <int> par, vector <vector<int>> a) {
    G.resize(n);
    for (int i = 0; i < n; i++) {
        G[i].clear();
    }
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            marked[i][j] = false;
        }
        uncert[i] = 0;
        diff[i] = 0;
    }
    for (int i = 1; i < n; i++) {
        G[par[i]].push_back(i);
    }
    int ans = 0;
    for (int j = 0; j < n - 1; j++) {
        bool ch = true;
        for (int i = 0; i < m; i++) {
            if (i == 0) {
                for (int q = 1; q < m; q++) {
                    if (marked[q][a[i][j]]) {
                        diff[q]--;
                    }
                    else diff[q]++;
                }
            }
            else {
                if (marked[0][a[i][j]]) diff[i]--;
                else diff[i]++;
            }
            marked[i][a[i][j]] = true;
            for (auto it : G[a[i][j]]) {
                if (!marked[i][it]) uncert[i]++;
            }
            if (marked[i][par[a[i][j]]]) uncert[i]--;
            if (uncert[i] > 0) ch = false;
            if (diff[i] > 0) ch = false;
        }
        if (ch) ans++;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...