답안 #920732

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
920732 2024-02-03T01:19:47 Z NK_ The Potion of Great Power (CEOI20_potion) C++17
38 / 100
1321 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> using uset = unordered_set<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 = 700;
const int INF = 1e9;
int N, D; vi H;
V<V<uset<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<uset<int>> adj(N); stor.resize(M + 1);
	for(int i = 0; i < U; i++) {
		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); }

		if (i % BLK == 0) stor[i / BLK] = adj;
	}
}

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

	for(int d = B * BLK + 1; 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 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 856 KB Output is correct
2 Correct 2 ms 856 KB Output is correct
3 Correct 2 ms 856 KB Output is correct
4 Correct 17 ms 17976 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 219 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 230 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 96 ms 24656 KB Output is correct
2 Correct 123 ms 10840 KB Output is correct
3 Correct 537 ms 10072 KB Output is correct
4 Correct 1242 ms 19836 KB Output is correct
5 Correct 1248 ms 22616 KB Output is correct
6 Correct 148 ms 8792 KB Output is correct
7 Correct 1321 ms 11608 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 2 ms 856 KB Output is correct
3 Correct 2 ms 856 KB Output is correct
4 Correct 2 ms 856 KB Output is correct
5 Correct 17 ms 17976 KB Output is correct
6 Runtime error 219 ms 262144 KB Execution killed with signal 9
7 Halted 0 ms 0 KB -