Submission #1340016

#TimeUsernameProblemLanguageResultExecution timeMemory
1340016vtnooThe Potion of Great Power (CEOI20_potion)C++20
0 / 100
48 ms9720 KiB
#include <bits/stdc++.h>
#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define all(x) x.begin(),x.end()
#define sz(a) ((int)a.size())
#define pb push_back
using namespace std;
typedef long long ll; 
typedef pair<int,int> ii;

const int MAXN=1e5+5,SQRT=360,INF=1e9;

int act;

struct Block{
	int tim=INF,op=0;
	set<ii>aristas;
	void ins(int u,int a,int b){
		if(tim==INF)tim=u;
		op++;  
		a--,b--;
		if(a>b)swap(a,b); 
		if(aristas.count({a,b})){
			aristas.erase({a,b});
		}else{
			aristas.insert({a,b});
		}
	}
}blk[SQRT];

int n,h[MAXN],A[MAXN],B[MAXN],U;

void init(int N, int D, int H[]) {
	L(i,0,N-1)h[i]=H[i];
	n=N;
	act=0;
}

void curseChanges(int U_, int A_[], int B_[]) {
	U=U_;
	L(u,0,U-1){
		A[u]=A_[u],B[u]=B_[u];
		A[u]--,B[u]--;
		if(blk[act].op>=SQRT){
			act++;
		}
		blk[act].ins(u,A[u],B[u]);
	}
}

int question(int x, int y, int v) {
	int l=0,r=act+1;
	while(r-l>1){
		int m=(r+l)/2;
		if(blk[m].tim<=v){
			l=m;
		}else{
			r=m;
		}
	}
	auto e=blk[l-1].aristas;
	L(i,blk[l].tim,v){
		int a=A[i],b=B[i];
		if(a>b)swap(a,b);
		if(e.count({a,b})){
			e.erase({a,b});
		}else{
			e.insert({a,b});
		}
	}
	vector<vector<int>>adj(n);
	for(auto [a,b]:e){
		adj[a].pb(b);
		adj[b].pb(a);
	}
	int ans=INF;
	for(auto i:adj[x]){
		for(auto j:adj[y]){
			ans=min(ans,abs(h[i]-h[j]));
		}
	}
	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...