比赛 |
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;
}