Submission #369618

#TimeUsernameProblemLanguageResultExecution timeMemory
369618YJUCollapse (JOI18_collapse)C++14
0 / 100
289 ms2536 KiB
#include<bits/stdc++.h> #pragma GCC optimize("unroll-loops,no-stack-protector,Ofast") using namespace std; typedef int ll; typedef long double ld; typedef pair<ll,ll> pll; const ll MOD=1e9+7; const ll MOD2=998244353; const ll N=2e5+5; const ld pi=acos(-1); //const ll INF=(1LL<<60); #define SQ(i) ((i)*(i)) #define REP(i,n) for(ll i=0;i<n;i++) #define REP1(i,n) for(ll i=1;i<=n;i++) #define pb push_back #define mp make_pair #define X first #define Y second #define setp setprecision #define lwb lower_bound #define SZ(_a) (ll)_a.size() ll n,dir[N]; set<pll> ms; ll find(ll id){ return (id==dir[id]?id:dir[id]=find(dir[id])); } vector<ll> simulateCollapse(ll _N,vector<ll> _T,vector<ll> _X,vector<ll> _Y,vector<ll> _W,vector<ll> _P){ vector<ll> ans; n=_N; REP(i,SZ(_W)){ ll cnt=n; ms.clear(); REP1(j,n)dir[j]=j; REP(j,_W[i]+1){ if(_T[j]==0){ ms.insert(mp(_X[j],_Y[j])); }else{ ms.erase(mp(_X[j],_Y[j])); } } for(auto j:ms){ if(_P[i]<j.X||_P[i]<=j.Y){ if(find(j.X)!=find(j.Y))--cnt; dir[find(j.X)]=find(j.Y); } } ans.pb(cnt); } 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...