Submission #1299105

#TimeUsernameProblemLanguageResultExecution timeMemory
1299105PieArmyThe Potion of Great Power (CEOI20_potion)C++20
17 / 100
704 ms327680 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define fr first #define sc second #define endl '\n' using namespace std; #define mid ((left+right)>>1) int n; int h[100023]; map<int,set<pair<int,int>>>mp[100023]; void init(int N, int D, int H[]){ n=N; for(int i=0;i<n;i++){ h[i]=H[i]; mp[i][0]=set<pair<int,int>>(); } } void curseChanges(int U, int A[], int B[]){ for(int i=1;i<=U;i++){ int a=A[i-1],b=B[i-1]; set<pair<int,int>>st=(--mp[a].end())->sc; mp[a][i]=st; st=(--mp[b].end())->sc; mp[b][i]=st; if(st.count({h[a],a})){ mp[b][i].erase({h[a],a}); mp[a][i].erase({h[b],b}); } else{ mp[b][i].insert({h[a],a}); mp[a][i].insert({h[b],b}); } } } int question(int x, int y, int v){ set<pair<int,int>>&a=(--mp[x].upper_bound(v))->sc; set<pair<int,int>>&b=(--mp[y].upper_bound(v))->sc; int res=1e9; for(auto x:a){ auto itr=b.lower_bound(x); if(itr!=b.end())res=min(res,abs(x.fr-itr->fr)); if(itr!=b.begin()){ itr--; res=min(res,abs(x.fr-itr->fr)); } } return res; }
#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...