RE求条
查看原帖
RE求条
985846
UltimaRatio楼主2025/1/14 23:40

样例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;
}
2025/1/14 23:40
加载中...