Submission #767584

#TimeUsernameProblemLanguageResultExecution timeMemory
767584Essa2006Synchronization (JOI13_synchronization)C++14
30 / 100
386 ms20608 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' #define FF first #define SS second #define all(a) a.begin(), a.end() #define mod (ll)(1000000007) const int inf=1e9; int n, q1, q2, m; vector<vector<int>>A; map<int, pair<int, int>>mp; void pre(){ A.clear(), mp.clear(); A.resize(n+1); m=n-1; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>q1>>q2; pre(); int cnt=1; while(m--){ int u, v; cin>>u>>v; if(u>v) swap(u, v); A[u].push_back(v); A[v].push_back(u); mp[cnt++]={u, v}; } vector<int>Mnf(n+1), Mxf(n+1); for(int i=1;i<=n;i++){ Mnf[i]=Mxf[i]=i; } set<array<int, 2>>S; for(int i=1;i<=n;i++){ S.insert({i, i}); } vector<bool>Active(n); while(q1--){ int id; cin>>id; int u=mp[id].FF, v=mp[id].SS; int L=u, R=v; array<int, 2>a={u, inf}; auto it=S.upper_bound(a); a=*--it; L=a[0]; a={v, inf}; it=S.upper_bound(a); a=*--it; R=a[1]; if(!Active[id]){ Mxf[L]=Mxf[R], Mnf[R]=Mnf[L]; a={u, inf}; it=S.upper_bound(a); S.erase(--it); a={v, inf}; it=S.upper_bound(a); S.erase(--it); S.insert({L, R}); } else{ Mnf[u]=Mnf[v]=Mnf[L]; Mxf[u]=Mxf[v]=Mxf[R]; a={L, R}; S.erase(a); S.insert({L, u}); S.insert({v, R}); } Active[id]=!Active[id]; } for(int i=2;i<=n;i++){ Mxf[i]=max(Mxf[i], Mxf[i-1]); } for(int i=n-1;i>=1;i--){ Mnf[i]=min(Mnf[i], Mnf[i+1]); } while(q2--){ int x; cin>>x; cout<<Mxf[x]-Mnf[x]+1<<endl; } }
#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...