比赛 20251001国庆欢乐赛1 评测结果 WWWWTEEEEE
题目名称 国旗计划 最终得分 0
用户昵称 李奇文 运行时间 3.205 s
代码语言 C++ 内存使用 4.38 MiB
提交时间 2025-10-01 11:23:00
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
struct node{
    int c,d;
}a[N];
int n,m,ans;
int f[N],v[N];
void dfs(int k,int d){
    bool ise=true;
    for(int i=1;i<=m;i++){
        if(f[i]==0){
            ise=false;
            break;
        }
    }
    if(ise){
        ans=k;
        return;
    }
    if(d==k) return;
    for(int i=1;i<=n;i++){
        if(!v[i]){
            v[i]=1;
            for(int j=a[i].c;j<=a[i].d;j++){
                f[j]+=1;
                f[j%m]+=1;
            }
            dfs(k,d+1);
            if(ans) return;
            v[i]=0;
            for(int j=a[i].c;j<=a[i].d;j++){
                f[j]-=1;
                f[j%m]-=1;
            }
        }
    }
}
int main(){
    freopen("flagplan.in","r",stdin);
    freopen("flagplan.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i].c>>a[i].d;
        if(a[i].c>a[i].d) a[i].d+=m;
    }
    for(int i=1;i<=n;i++){
        for(int j=a[i].c;j<=a[i].d;j++){
            f[j]+=1;
            f[j%m]+=1;
        }
        v[i]=1;
        dfs(1,0);
        if(ans){
            cout<<ans<<" ";
            ans=0;
        }
        v[i]=0;
        for(int j=a[i].c;j<=a[i].d;j++){
            f[j]-=1;
            f[j%m]-=1;
        }
    }
    return 0;
}