Submission #1309675

#TimeUsernameProblemLanguageResultExecution timeMemory
1309675vtnooThe Potion of Great Power (CEOI20_potion)C++20
0 / 100
253 ms53656 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 ll long long
#define sz(a) ((int) a.size())
#define all(a) a.begin(), a.end()
#define vi vector<int>
#define pb emplace_back
#define me(a, x) memset(a, x, sizeof(a))
#define fst first
#define snd second
#define ii pair<int,int>
using namespace std;
const int MAXN=1e5+1,MAXU=2e5+1,INF=1e9;
int h[MAXN],cnt[MAXN][2];
set<ii>evs[MAXN][2];
map<ii,int>parity;
void init(int N, int D, int H[]) {
    L(i,0,N-1)h[i]=H[i];
    L(i,0,N-1){
		evs[i][0].insert({-1,0});
		evs[i][1].insert({-1,0});
	}
}

void curseChanges(int U, int A[], int B[]) {
	L(i,0,U-1){
		int a=A[i],b=B[i];
		if(a>b)swap(a,b);
		ii p={a,b};
		parity[p]++;
		if(parity[p]%2){
			cnt[a][h[b]]++;
			cnt[b][h[a]]++;
		}else{
			cnt[a][h[b]]--;
			cnt[b][h[a]]--;
		}
		evs[a][h[b]].insert({i+1,cnt[a][h[b]]>0});
		evs[b][h[a]].insert({i+1,cnt[b][h[a]]>0});
	}
}

int question(int x, int y, int v) {
	int ans=INF;
	bool hasX=false,hasY=false;
	for(int f:{0,1}) {
		auto e1=prev(evs[x][f].upper_bound({v,-1}));
		auto e2=prev(evs[y][f].upper_bound({v,-1}));
		if(e1->snd)hasX=true;
		if(e2->snd)hasY=true;
		if(e1->snd&&e2->snd)ans=0;
	}
	if(!hasX||!hasY) return INF;
	if(sz(evs[x][0])&&sz(evs[y][1])){
		auto e1=evs[x][0].upper_bound({v,-1});
		e1--;
		auto e2=evs[y][1].upper_bound({v,-1});
		e2--;
		if(e1->snd==1&&e2->snd==1)ans=1;
	}
	if(sz(evs[x][1])&&sz(evs[y][0])){
		auto e1=evs[x][1].upper_bound({v,-1});
		e1--;
		auto e2=evs[y][0].upper_bound({v,-1});
		e2--;
		if(e1->snd==1&&e2->snd==1)ans=1;
	}	
	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...