Submission #1222584

#TimeUsernameProblemLanguageResultExecution timeMemory
1222584KindaGoodGamesThe Potion of Great Power (CEOI20_potion)C++20
38 / 100
2118 ms327680 KiB
#pragma GCC optimize("O3, unroll-loops, Ofast") #include<bits/stdc++.h> using namespace std; #define pii pair<int,int> int BSZ = 2000; int n, d; vector<int> height; int cursz = 0; vector<pii> change; vector<vector<set<int>>> checks; void init(int N, int D, int H[]) { height.resize(N); n = N; for(int i = 0; i < n; i++){ height[i] = H[i]; } } void curseChanges(int U, int A[], int B[]) { BSZ = sqrt(U); checks.resize(ceil(U/(double)BSZ)+1); change.resize(U); vector<set<int>> adj(n); for(int i = 0;i < U; i++){ change[i] = {A[i], B[i]}; } for(int i = 0; i < U; i++){ if(i % BSZ == 0){ checks[cursz++] = adj; } int a,b; tie(a,b) = change[i]; if(adj[a].count(b)){ adj[a].erase(b); adj[b].erase(a); }else{ adj[a].insert(b); adj[b].insert(a); } } if(U % BSZ == 0){ checks[cursz++] = adj; } } int question(int x, int y, int v) { set<int> adjX = checks[v/BSZ][x]; set<int> adjY= checks[v/BSZ][y]; for(int i = (v/BSZ)*BSZ; i < v; i++){ int a,b; tie(a,b) = change[i]; if(a == x || b == x){ if(b == x){ swap(a,b); } if(adjX.count(b)){ adjX.erase(b); }else{ adjX.insert(b); } } if(a == y || b == y){ if(b == y){ swap(a,b); } if(adjY.count(b)){ adjY.erase(b); }else{ adjY.insert(b); } } } set<int> reachX; set<int> reachY; for(auto u : adjX){ reachX.insert(height[u]); } for(auto u : adjY){ reachY.insert(height[u]); } int mi = 1e9; for(auto u : reachX){ { auto it = reachY.lower_bound(u); if(it != reachY.end()){ mi = min(mi, abs(u-(*it))); } } { auto it = reachY.upper_bound(u); if(it != reachY.begin()){ it--; mi = min(mi, abs(u-(*it))); } } } return mi; }

Compilation message (stderr)

potion.cpp:1:47: warning: bad option '-f unroll-loops' to pragma 'optimize' [-Wpragmas]
    1 | #pragma GCC optimize("O3, unroll-loops, Ofast")
      |                                               ^
potion.cpp:1:47: warning: bad option '-f Ofast' to pragma 'optimize' [-Wpragmas]
potion.cpp:16:32: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   16 | void init(int N, int D, int H[]) {
      |                                ^
potion.cpp:16:32: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
potion.cpp:23:42: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   23 | void curseChanges(int U, int A[], int B[]) {
      |                                          ^
potion.cpp:23:42: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
potion.cpp:51:33: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   51 | int question(int x, int y, int v) {
      |                                 ^
potion.cpp:51:33: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
#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...