| Run ID | Author | Problem | Lang | Verdict | Score | Time | Memory | Code Length | Submit Time |
|---|---|---|---|---|---|---|---|---|---|
| 41251 | baka24 | 【BJ】T3 | C++ | Accepted | 100 | 601 MS | 148600 KB | 1786 | 2026-04-11 18:56:45 |
#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define fr first #define sc second #define mk make_pair #define pb push_back const int MAXN=1000010,N=1e6; int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;} int n,m,as[MAXN]; vector<pii>G[MAXN],P[MAXN]; int it[MAXN]; queue<int>Q;int inq[MAXN]; void chk(int i){ if(P[i].size()>2&&!inq[i])Q.push(i),inq[i]=1; } void bt1(int i){ if(it[i]==G[i].size())return; if(!as[G[i][it[i]].sc])as[G[i][it[i]].sc]=1,P[G[i][it[i]].fr].pb(mk(i,G[i][it[i]].sc)),chk(G[i][it[i]].fr); } void bt2(int i){ if(it[i]==G[i].size())return; if(!as[G[i].back().sc])as[G[i].back().sc]=1,P[G[i].back().fr].pb(mk(i,G[i].back().sc)),chk(G[i].back().fr); } void dfs(int x){ pii mx={0,0},mn={N,N}; for(auto o:P[x])mx=max(mx,o),mn=min(mn,o); for(auto p:P[x])if(p!=mx&&p!=mn){ if(it[p.fr]==G[p.fr].size()-1)as[p.sc]=0,it[p.fr]++; else{ if(p.sc==G[p.fr].back().sc)as[p.sc]=0,G[p.fr].pop_back(),bt2(p.fr); else as[p.sc]=0,it[p.fr]++,bt1(p.fr); } } P[x].clear(); P[x].pb(mn),P[x].pb(mx); } void slv(){ n=read(); for(int i=1;i<=n;i++){ G[read()].pb(mk(read(),i)); } for(int i=1;i<=N;i++){ sort(G[i].begin(),G[i].end()); bt1(i); bt2(i); } while(!Q.empty()){ int x=Q.front();inq[x]=0;Q.pop(); dfs(x); } for(int i=1;i<=n;i++)printf("%d",as[i]); } signed main(){ // freopen("1.in","r",stdin);freopen("1.out","w",stdout); slv(); // cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"; return 0; }