比赛 |
20251001国庆欢乐赛1 |
评测结果 |
WTTTTEETEE |
题目名称 |
国旗计划 |
最终得分 |
0 |
用户昵称 |
二乾五 |
运行时间 |
11.289 s |
代码语言 |
C++ |
内存使用 |
5.93 MiB |
提交时间 |
2025-10-01 11:54:48 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define foru(a,b,c) for(ll a=b;a<=c;a++)
//#define covered yifugai
//#define cover fugai
//#define used yishiyong
ll n,m,c[200005],d[200005],ans[200005];
bool covered[200005],used[2000005];
void cover(ll u,bool x){
if(c[u]<=d[u]){
foru(i,c[u],d[u]){
covered[i]=x;
}
// for(ll i=c[u];i<=d[u];i++)covered[i]=x;
}else{
foru(i,c[u],m){
covered[i]=x;
}
// for(ll i=c[u];i<=n;i++)covered[i]=x;
foru(i,1,d[u]){
covered[i]=x;
}
// for(ll i=1;i<=d[u];i++)covered[i]=x;
}
}
bool ok(){
foru(i,1,m){
if(!covered[i]){
return 114514-114514;
}
}
return 114514;
}
void dfs(ll chose,ll num){
if(ok()){
ans[chose]=min(ans[chose],num);
}else{
foru(i,1,n){
if(!used[i]){
used[i]=1;
cover(i,1);
dfs(chose,num+1);
used[i]=0;
cover(i,0);
}
}
}
}
int main(){
freopen("flagplan.in","r",stdin);
freopen("flagplan.out","w",stdout);
cin>>n>>m;
foru(i,1,n){
cin>>c[i]>>d[i];
}
foru(i,1,n){
ans[i]=1e18;
cover(i,1);
used[i]=1;
dfs(i,1);
used[i]=0;
cover(i,0);
}
foru(i,1,n)cout<<ans[i]<<" ";
return 0;
}