记录编号 |
606625 |
评测结果 |
AETEEEEEEE |
题目名称 |
3842.[SCOI 2015] 国旗计划 |
最终得分 |
10 |
用户昵称 |
zhyn |
是否通过 |
未通过 |
代码语言 |
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;
}