제출 #1299126

#제출 시각아이디문제언어결과실행 시간메모리
1299126PieArmyThe Potion of Great Power (CEOI20_potion)C++20
17 / 100
669 ms327680 KiB
#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
#define endl '\n'
using namespace std;
#define mid ((left+right)>>1)

int n;
int h[100023];
map<int,set<int>>mp[100023];

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

set<int>st;

void curseChanges(int U, int A[], int B[]){
	for(int i=1;i<=U;i++){
		int a=A[i-1],b=B[i-1];
		st=(--mp[a].end())->sc;
		mp[a][i]=st;
		st=(--mp[b].end())->sc;
		mp[b][i]=st;
		if(st.count(a)){
			mp[b][i].erase(a);
			mp[a][i].erase(b);
		}
		else{
			mp[b][i].insert(a);
			mp[a][i].insert(b);
		}
	}
}

int question(int x, int y, int v){
	set<int>&a=(--mp[x].upper_bound(v))->sc;
	set<int>&b=(--mp[y].upper_bound(v))->sc;
	int res=1e9;
	vector<pair<int,bool>>vec;
	for(auto x:a){
		vec.pb({h[x],0});
	}
	for(auto x:b){
		vec.pb({h[x],1});
	}
	sort(vec.begin(),vec.end());
	for(int i=1;i<vec.size();i++){
		if(vec[i].sc!=vec[i-1].sc){
			res=min(res,abs(vec[i].fr-vec[i-1].fr));
		}
	}
	vec.clear();
	return res;
}
#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...