记录编号 606625 评测结果 AETEEEEEEE
题目名称 3842.[SCOI 2015] 国旗计划 最终得分 10
用户昵称 Gravatarzhyn 是否通过 未通过
代码语言 C++ 运行时间 3.195 s
提交时间 2025-10-01 15:36:05 内存使用 3.40 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
 
#define ll long long
#define maxn 205
 
struct node{
    int a,b,id;
}num[maxn];
node p[maxn];
int ans=105;
int k[maxn],f[maxn];
int n,m;
bool cmp(node x,node y){
    if(x.a==y.a){
        return x.b>y.b;
    }
    return  x.a<y.a;
}
 
 
void solv(int u,int t,int s){
    if(num[u].b>=t){
        ans=min(ans,s);
        return;
    }
    //cout<<u<<"\n";
    for(int i=u+1;i<=2*n;i++){
        if(!(num[u].a>=num[i].a&&num[u].b<=num[i].b)){
            if(num[i].a>num[u].b){
                break;
            }
            solv(i,t,s+1);
        }
    }
}



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;
        k[i]=num[i].a+m;
        if(num[i].a>num[i].b){
            num[i].b+=m;
        }
        p[i].a=num[i].a,p[i].b=num[i].b;
        num[i].id=i;
    }
    
    for(int i=n+1;i<=n*2;i++){
        num[i].a=num[i-n].a+m,num[i].b=num[i-n].b+m;
    }
    
    sort(num+1,num+1+2*n,cmp);
    for(int i=1;i<=n;i++){
        f[num[i].id]=i;
    }
    
    
    for(int i=1;i<=n;i++){
        ans=105;
        solv(f[i],k[i],1);
        cout<<ans<<" ";
    } 
    
    
    
    
    return 0;
}