제출 #1147207

#제출 시각아이디문제언어결과실행 시간메모리
1147207Dan4LifeThe Potion of Great Power (CEOI20_potion)C++20
0 / 100
69 ms95240 KiB
#include <bits/stdc++.h>
using namespace std;
#define sz(a) (int)a.size()
#define all(a) begin(a),end(a)
const int mxN = (int)1e3+10;
using ar2 = array<int,2>;
int n, m;
int a[mxN];
set<ar2> S[mxN][mxN];

void init(int N, int D, int H[]) {
	n = N;
	for(int i = 0; i < n; i++) a[i]=H[i];
}

void toggle(int x, int y, int t){
	if(S[t][x].count({a[y],y})) S[t][x].erase({a[y],y});
	else S[t][x].insert({a[y],y});
}

void curseChanges(int U, int A[], int B[]) {
	m = U;
	for(int i = 0; i < m; i++){
		int x = A[i], y = B[i];
		for(int j = 0; j < n; j++) S[i+1][j]=S[i][j];
		toggle(x,y,i+1); toggle(y,x,i+1);
	}
}

int question(int x, int y, int t) {
	int ans = (int)1e9;
	if(!sz(S[t][x]) or !sz(S[t][y])) return ans;
	auto itr = begin(S[t][y]);
	for(auto [u,v] : S[t][x]){
		while(itr!=end(S[t][y]) and (*itr)[0] < u) itr++;
		if(itr!=begin(S[t][y])) ans=min(ans, abs(u-(*prev(itr))[0]));
		if(itr!=end(S[t][y])) ans=min(ans, abs(u-(*itr)[0]));
	}
    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...