Submission #1218198

#TimeUsernameProblemLanguageResultExecution timeMemory
1218198__moin__The Potion of Great Power (CEOI20_potion)C++20
0 / 100
3099 ms9336 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.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 (!any_of(adj[a].begin(), adj[a].end(), [&](int x) {return x == b;})) {
            adj[a].push_back(b);
            adj[b].push_back(a);
        } else {
            adj[a].erase(find(adj[a].begin(), adj[a].end(), b));
            adj[b].erase(find(adj[b].begin(), adj[b].end(), 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...