样例RE了,求条。
#include<bits/stdc++.h>
#define int long long
#define pii pair<long long,long long>
#define fir first
#define sec second
using namespace std;
const int N=100010;
set<pii> X,Y;
int n,x[N],y[N];
int solve(set<pii> &a,set<pii> &b){
cout<<1<<endl;
set<pii> ::iterator ta1=a.begin();cout<<'a'<<endl;
set<pii> ::iterator ta2=--a.end();cout<<'b'<<endl;
set<pii> ::iterator tb1=b.begin();cout<<'c'<<endl;
set<pii> ::iterator tb2=--b.end();cout<<'e'<<endl;
set<pii> ::iterator nxt,t,ed1,ed2;cout<<'f'<<endl;
cout<<2<<endl;
while(*ta1<=*ta2||*tb1<=*tb2){
cout<<3<<endl;
assert(!a.empty());
if(ta1!=--a.end()){
nxt=++ta1;--ta1;
set<pii> aa,bb;
if(ta1->fir+1<nxt->fir){
for(t=a.begin();t!=nxt;){
int u=t->sec;++t;
aa.insert(pii(x[u],u));
bb.insert(pii(y[u],u));
b.erase(pii(y[u],u));
a.erase(pii(x[u],u));
}
return solve(aa,bb)+solve(a,b);
}
}
if(ta2!=a.begin()){
nxt=--ta2;++ta2;
set<pii> aa,bb;
if(ta2->fir-1>nxt->fir){
for(t=--a.end();t!=nxt;){
int u=t->sec;--t;
aa.insert(pii(x[u],u));
bb.insert(pii(y[u],u));
b.erase(pii(y[u],u));
a.erase(pii(x[u],u));
}
return solve(aa,bb)+solve(a,b);
}
}
if(tb1!=--b.end()){
nxt=++tb1;tb1--;
set<pii> aa,bb;
if(tb1->fir+1<nxt->fir){
for(t=b.begin();t!=nxt;){
int u=t->sec;++t;
aa.insert(pii(x[u],u));
bb.insert(pii(y[u],u));
b.erase(pii(y[u],u));
a.erase(pii(x[u],u));
}
return solve(aa,bb)+solve(a,b);
}
}
if(tb2!=b.begin()){
nxt=--tb2;++tb2;
set<pii> aa,bb;
if(tb2->fir-1>nxt->fir){
for(t=--b.end();t!=nxt;){
int u=t->sec;--t;
aa.insert(pii(x[u],u));
bb.insert(pii(y[u],u));
b.erase(pii(y[u],u));
a.erase(pii(x[u],u));
}
}
return solve(aa,bb)+solve(a,b);
}
ed1=--a.end(),ed2=--b.end();
if(ta1==ed1&&tb1==ed2)break;
if(ta1!=ed1)++ta1,--ta2;
if(tb1!=ed2)++tb1,--tb2;
}
return 1;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
X.insert(pii(x[i],i));
Y.insert(pii(y[i],i));
}
cout<<solve(X,Y)<<endl;
return 0;
}