比赛 |
树形数据结构进阶(再进阶) |
评测结果 |
WWAWAWWWEWWERMMMMMMM |
题目名称 |
区间 |
最终得分 |
10 |
用户昵称 |
李奇文 |
运行时间 |
2.268 s |
代码语言 |
C++ |
内存使用 |
2.88 MiB |
提交时间 |
2025-04-19 11:54:07 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=5e5;
int n,m,mina=N*200;
/*struct node{
int l,r,w;
}a[N];
struct code{
int w,id;
bool tb;
}c[N*2];
int n,m,cnt,tot;
bool cmpa(node a,node b){
return a.w<b.w;
}
bool cmpb(code a,code b){
return a.w<b.w;
}
struct tree{
int v,lz;
}f[N*16];
void pushdown(int p){
if(f[p].lz){
f[p<<1].lz+=f[p].lz;
f[p<<1^1].lz+=f[p].lz;
f[p<<1].v+=f[p].lz;
f[p<<1|1].v+=f[p].lz;
f[p].lz=0;
}
}
void update(int p,int l,int r,int x,int y,int k){
if(l>=x&&r<=y){
f[p].v+=k;
f[p].lz+=k;
pushdown(p);
return;
}
int mid=(l+r)>>1;
pushdown(p);
if (y<=mid) update(p<<1,l,mid,x,y,k);
else if (x>mid) update(p<<1|1,mid+1,r,x,y,k);
else update(p<<1,l,mid,x,y,k),update(p<<1|1,mid+1,r,x,y,k);
f[p].v=max(f[p<<1].v,f[p<<1|1].v);
}
int l,r,mid,ans;*/
struct xd{
int l,r,w;
}f[N];
struct node{
int w;
int ma,mi,df;
}a[100000];
bool cmp(xd x,xd y){
return x.w<y.w;
}
int main(){
freopen("interval.in","r",stdin);
freopen("interval.out","w",stdout);
std::cin>>n>>m;
for(int i=1;i<=n;i++){
std::cin>>f[i].l>>f[i].r;
f[i].w=f[i].r-f[i].l;
for(int j=f[i].l;j<=f[i].r;j++){
a[j].w++;
}
}
sort(f+1,f+1+n,cmp);
for(int i=1;i<=100000;i++){
if(a[i].w<m) continue;
int minn=N*200;
for(int j=1;j<=n-m+1;j++){
if(f[j].l<=i&&f[j].r>=i&&f[j+m-1].l<=i&&f[j+m-1].r>=i)
minn=min(minn,f[j+m-1].w-f[j].w);
}
mina=min(mina,minn);
}
std::cout<<mina<<endl;
return 0;
}