比赛 20251001国庆欢乐赛1 评测结果 WETEEEEEEE
题目名称 国旗计划 最终得分 0
用户昵称 zhyn 运行时间 3.179 s
代码语言 C++ 内存使用 3.38 MiB
提交时间 2025-10-01 11:42:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define maxn 105

struct node{
    int a,b,id;
}num[maxn];
node p[maxn];
int ans=105;
int k[maxn];
int n,m;
bool cmp(node x,node y){
    if(x.a==y.a){
        if(x.b<x.a&&y.b>y.a){
            return true;
        }
        else if(x.b>x.a&&y.b<y.a){
            return false;
        }
        else return x.b>y.b;
    }
    return  x.a<y.a;
}

void solv(int u,int v,int f,bool vis,int s){
    if(vis&&v>=u){
        ans=min(ans,s);
        return;
    }
    //cout<<f<<"\n";
    for(int i=f+1;i<=n;i++){
        if(num[f].b>=num[i].a/*&&!(num[f].a>=num[i].a&&num[f].b<=num[i].b)*/){
            if(num[f].a>num[i].b){
                solv(u,num[i].b,i,true,s+1);
            }
            else solv(u,num[i].b,i,vis,s+1);
        }
        if(num[f].a>num[f].b){
            solv(u,num[i].b,i,true,s+1);
        }
    }
    if(num[f].a>num[f].b){
        for(int i=1;i<=n;i++){
            if(num[i].a<=num[f].b/*&&!(num[f].a>=num[i].a&&num[f].b<=num[i].b)*/){
                solv(u,num[i].b,i,true,s+1);
            }
            else{
                break;
            }
        }
    }
    
}

int main(){
    
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    
    freopen("flagplan.in","r",stdin);
    freopen("flagplan.out","w",stdout);
    
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>num[i].a>>num[i].b;
        p[i].a=num[i].a,p[i].b=num[i].b;
        num[i].id=i;
    }
    
    
    sort(num+1,num+1+n,cmp);
    
    for(int i=1;i<=n;i++){
        k[num[i].id]=i;
    }
    
    for(int i=1;i<=n;i++){
        ans=105;
        solv(p[i].a,p[i].b,k[i],false,1);
        cout<<ans<<"\n";
    }
    
    
    
    return 0;
}