比赛 |
树形数据结构进阶(再进阶) |
评测结果 |
RRRRRRRRRRRRRRRRRRRR |
题目名称 |
区间 |
最终得分 |
0 |
用户昵称 |
二乾五 |
运行时间 |
3.992 s |
代码语言 |
C++ |
内存使用 |
3.08 MiB |
提交时间 |
2025-04-19 09:12:26 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,lest,li,sest=1145141919810,si,las,ans=1145141919810;
bool check[500050];
struct itv{
ll l,r,len;
}a[500050];
bool cmp(itv a,itv b){
return a.len>b.len;
}
void dfs(ll x,ll cl,ll cr){
if(x==m+1){
ans=min(ans,lest-sest);
}else{
for(ll i=1;i<=n;i++){
if(a[i].l>cr||a[i].r<cl||check[i]){
continue;
}
check[i]=1;
lest=max(a[i].len,lest);
sest=min(a[i].len,sest);
ll tl=lest,ts=sest;
dfs(x+1,max(cl,a[i].l),min(cr,a[i].l));
lest=tl,sest=ts;
check[i]=0;
}
}
}
int main(){
cin>>n>>m;
for(ll i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
a[i].len=a[i].r-a[i].l;
}
sort(a+1,a+n+1,cmp);
dfs(1,0,1e9);
cout<<ans;
return 0;
}