Submission #1222574

#TimeUsernameProblemLanguageResultExecution timeMemory
1222574KindaGoodGamesThe Potion of Great Power (CEOI20_potion)C++17
0 / 100
175 ms327680 KiB
#pragma GCC optimize("O3, unroll-loops, Ofast")
#include<bits/stdc++.h>

using namespace std;
 
#define pii pair<int,int>

int BSZ = 100; 

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) { 
    // vector<set<int>> adj=checks[v/BSZ];
    // for(int i = (v/BSZ)*BSZ; i < v; i++){ 
    //     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); 
    //     }
    // }   

    // set<int> reachX; 
    // set<int> reachY;  
    // for(auto u : adj[x]){
    //     reachX.insert(height[u]);
    // } 
    // for(auto u : adj[y]){
    //     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...