Submission #1218197

#TimeUsernameProblemLanguageResultExecution timeMemory
1218197__moin__The Potion of Great Power (CEOI20_potion)C++20
0 / 100
3086 ms31880 KiB
#include <bits/stdc++.h>
// #include "grader.cpp"
using namespace std;

vector<set<int>> adj_sets;
vector<vector<int>> adj;

vector<int> heights;

void init(int N, int D, int H[]) {
    adj_sets.resize(N);
    heights.resize(N);
    for (int i = 0; i < N; i++) heights[i] = H[i];
}

int u;

void curseChanges(int U, int A[], int B[]) {
    u = U;
    for (int i = 0; i < U; i++) {
        int a = A[i], b = B[i];// a--; b--;
        if (adj_sets[a].find(b) == adj_sets[a].end()) {
            adj_sets[a].insert(b);
            adj_sets[b].insert(a);
        } else {
            adj_sets[a].erase(b);
            adj_sets[b].erase(a);
        }
    }
    adj.resize(adj_sets.size());
    for (int i = 0; i < adj_sets.size(); i++) {
        adj[i] = vector<int>(adj_sets[i].begin(), adj_sets[i].end());
    }
}

int question(int x, int y, int v) {
    // assert (v == u);
    // cerr << "X = " << x << ", Y = " << y << ", V = " << v << "\n";
    vector<int>& sx = adj[x];
    vector<int>& sy = adj[y];
    int min_diff = 1e9;
    for (int a : sx) for (int b : sy) min_diff = min(min_diff, abs(heights[a] - heights[b]));
    return min_diff;
}
#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...