답안 #920727

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
920727 2024-02-03T00:57:43 Z NK_ The Potion of Great Power (CEOI20_potion) C++17
0 / 100
171 ms 262144 KB
// Success consists of going from failure to failure without loss of enthusiasm
#include <bits/stdc++.h>

using namespace std;

#define nl '\n'
#define f first
#define s second
#define mp make_pair
#define pb push_back
#define sz(x) int(x.size())

template<class T> using V = vector<T>;
template<class T, size_t SZ> using AR = array<T, SZ>;
using vi = V<int>;
using pi = pair<int, int>;
using vpi = V<pi>;

const int BLK = 500;
const int INF = 1e9;
int N, D; vi H;
V<V<set<int>>> stor;
vpi E;

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

void curseChanges(int U, int A[], int B[]) {
	int M = U / BLK;
	V<set<int>> adj(N); stor.resize(M + 1);
	for(int i = 0; i < U; i++) {
		if (i % BLK == 0) stor[i / BLK] = adj;

		int u = A[i], v = B[i]; E.pb(mp(u, v));
		if (adj[u].count(v)) adj[u].erase(v), adj[v].erase(u);
		else adj[u].insert(v), adj[v].insert(u);
	}
	
	stor.pb(adj);
}

int question(int x, int y, int v) {
	int B = (v / BLK); set<int> X = stor[B][x], Y = stor[B][y];

	for(int d = B * BLK; d < v; d++) {
		if (E[d].f == x || E[d].s == x) {
			int z = E[d].f + E[d].s - x;
			if (X.count(z)) X.erase(z);
			else X.insert(z);
		} 

		if (E[d].f == y || E[d].s == y) {
			int z = E[d].f + E[d].s - y;
			if (Y.count(z)) Y.erase(z);
			else Y.insert(z);
		}
	}

	// cout << "X: ";
	// for(auto& c : X) cout << c << " ";
	// cout << nl;

	// cout << "Y: ";
	// for(auto& c : Y) cout << c << " ";
	// cout << nl;

	vpi C; 
	for(auto& c : X) C.pb(mp(H[c], 0));
	for(auto& c : Y) C.pb(mp(H[c], 1));
	sort(begin(C), end(C));

	int ans = INF;
	for(int i = 0; i + 1 < sz(C); i++) if (C[i].s != C[i + 1].s) ans = min(ans, abs(C[i].f - C[i + 1].f));

	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 1420 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 171 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 163 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 57 ms 43176 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Runtime error 2 ms 1420 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -