Submission #342435

#TimeUsernameProblemLanguageResultExecution timeMemory
342435leinad2The Potion of Great Power (CEOI20_potion)C++17
17 / 100
3072 ms44908 KiB
#include<bits/stdc++.h>
using namespace std;
int n, d, X[100010], i, j, u, A[100010], B[100010];
set<int>adj[100010], H[100010];
set<int>::iterator it, it2;
void init(int N, int D, int H[])
{
    n=N;
    d=D;
    for(i=0;i<n;i++)X[i]=H[i];
}
void curseChanges(int U, int C[], int D[])
{
    u=U;
    for(i=0;i<u;i++)A[i]=C[i],B[i]=D[i];
}
int question(int x, int y, int v)
{
    for(i=0;i<n;i++)
    {
        adj[i].clear();
        H[i].clear();
    }
    for(i=0;i<v;i++)
    {
        if(adj[A[i]].find(B[i])==adj[A[i]].end())
        {
            adj[A[i]].insert(B[i]);
            adj[B[i]].insert(A[i]);
        }
        else
        {
            adj[A[i]].erase(B[i]);
            adj[B[i]].erase(A[i]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(it=adj[i].begin();it!=adj[i].end();it++)
        {
            H[i].insert(X[*it]);
        }
    }
    int ans=1e9;
    if(!adj[x].size()||!adj[y].size())return 1000000000;
    for(it=H[x].begin();it!=H[x].end();it++)
    {
        it2=H[y].lower_bound(*it);
        if(it2==H[y].end())it2--;
        ans=min(ans, abs(*it-*it2));
        if(it2==H[y].begin())
        {
            continue;
        }
        it2--;
        ans=min(ans, abs(*it-*it2));
    }
    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...