比赛 20251001国庆欢乐赛1 评测结果 WTEEEEEEEE
题目名称 国旗计划 最终得分 0
用户昵称 ChenBp 运行时间 3.214 s
代码语言 C++ 内存使用 3.45 MiB
提交时间 2025-10-01 11:44:14
显示代码纯文本
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int n,m,c[1003],d[1003];
int now=0;
int te[1003];
int ans=0;
bool ok=0;
void dfs(int t,int cnt){
//    cout<<t;
    if(t==n+1){
        ok=1;
        int sum=0;
//        for(int i=1;i<=m;i++){
//            cout<<te[i];
//        }
//        cout<<endl;
        for(int i=1;i<=m;i++){
            sum+=te[i];
            if(!sum){
                ok=0;
                return;
            }
        }
        ans=cnt;
        return;
    }
    if(ok) return;
    if(t!=now){
        dfs(t+1,cnt);
    }
    if(ok) return;
    if(c[t]<d[t]){
        te[c[t]]+=1;
        te[d[t]+1]-=1;
    }else{
        te[c[t]]+=1;
        te[m+1]-=1;
        te[1]+=1;
        te[d[t]+1]-=1;
    }
    dfs(t+1,cnt+1);
    if(c[t]<d[t]){
        te[c[t]]-=1;
        te[d[t]+1]+=1;
    }else{
        te[c[t]]-=1;
        te[m+1]+=1;
        te[1]-=1;
        te[d[t]+1]+=1;
    }
}
int main(){
    freopen("flagplan.in","r",stdin);
    freopen("flagplan.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>c[i]>>d[i];
    }
    for(int i=1;i<=n;i++){
        memset(te,0,sizeof(te));
        ok=0;
        now=i;
        dfs(1,0);
        cout<<ans+1<<" ";
    }
}