Submission #1239094

#TimeUsernameProblemLanguageResultExecution timeMemory
1239094MalixThe Potion of Great Power (CEOI20_potion)C++20
21 / 100
859 ms327680 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> ti; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) #define all(x) (x).begin(),(x).end() ll INF=1000000000000000010; int inf=1e9; ll M=1e9+7; vi h; int n; vector<vector<vector<pi>>> a; vii b; set<pi> st; void init(int N, int D, int H[]) { n=N; h.resize(n); REP(i,0,n)h[i]=H[i]; a.resize(n,vector<vector<pi>>(500)); b.resize(n,vi(500,-1)); } void curseChanges(int U, int A[], int B[]) { REP(i,0,U){ int x=A[i],y=B[i]; if(x>y)swap(x,y); if(st.count({x,y})){ REP(j,0,500)if(b[x][j]==y){ b[x][j]=-1; a[x][j].PB({i,-1}); break; } REP(j,0,500)if(b[y][j]==x){ b[y][j]=-1; a[y][j].PB({i,-1}); break; } st.erase({x,y}); } else{ REP(j,0,500)if(b[x][j]==-1){ b[x][j]=y; a[x][j].PB({i,y}); break; } REP(j,0,500)if(b[y][j]==-1){ b[y][j]=x; a[y][j].PB({i,x}); break; } st.insert({x,y}); } } } int question(int x, int y, int v) { vi X,Y; REP(i,0,500)if(!a[x][i].empty()){ auto it=lower_bound(all(a[x][i]),make_pair(v,-2)); if(it==a[x][i].begin())continue; it--; if(it->S!=-1)X.PB(it->S); } REP(i,0,500)if(!a[y][i].empty()){ auto it=lower_bound(all(a[y][i]),make_pair(v,-2)); if(it==a[y][i].begin())continue; it--; if(it->S!=-1)Y.PB(it->S); } REP(i,0,X.size())X[i]=h[X[i]]; REP(i,0,Y.size())Y[i]=h[Y[i]]; sort(all(X));sort(all(Y)); X.erase(unique(all(X)),X.end()); Y.erase(unique(all(Y)),Y.end()); int ans=inf; REP(i,0,X.size()){ auto it=lower_bound(all(Y),X[i]); if(it!=Y.end())ans=min(ans,abs(*it-X[i])); if(it!=Y.begin()){ it--; ans=min(ans,abs(*it-X[i])); } } return ans; }
#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...