Pagini recente » Cod sursa (job #1169618) | Cod sursa (job #1578112) | Cod sursa (job #270414) | Cod sursa (job #3196684) | Cod sursa (job #396751)
Cod sursa(job #396751)
#include<algorithm>
using namespace std;
#define Nmax 1010
struct cel{
int x,y;
} v[Nmax],l[2*Nmax];
int cmp(cel a,cel b)
{
return(a.x<b.x);
}
int H,N,k,L,Lfin,Q,ifin,jfin;
int main()
{
freopen("patrate1.in","r",stdin);
freopen("patrate1.out","w",stdout);
scanf("%d%d",&N,&H);
for(int i=1;i<=N;++i)
{
scanf("%d%d",&v[i].x,&v[i].y);
v[i].y+=v[i].x-1;
l[++k].x=v[i].x;
l[k].y=1;
l[++k].x=v[i].y;
l[k].y=-1;
}
sort(l+1,l+k+1,cmp);
/*for(int i=1;i<=k;++i)
printf("%d ",l[i].x);
printf("\n");
for(int i=1;i<=k;++i)
printf("%d ",l[i].y);*/
for(int i=1;i<=k;++i)
{
if(l[i].x==l[i+1].x)
{
l[i].y+=l[i+1].y;
for(int j=i+1;j<=k;++j)
{
l[j].x=l[j+1].x;
l[j].y=l[j+1].y;
}
--k;
--i;
}
}
for(int i=1;i<=k;++i)
{
if(l[i].x-ifin+1>Lfin&&Q>=H)
{
Lfin=l[i].x-ifin+1;
jfin=ifin;
}
Q+=l[i].y;
// printf("%d %d %d %d\n",l[i].x,l[i].y,Q,ifin);
if(Q>=H&&l[i].y>=1&&ifin==0)
ifin=l[i].x;
//printf("%d %d %d %d\n",l[i].x,l[i].y,Q,ifin);
if(Q<H)
ifin=0;
// printf("%d %d %d %d\n",l[i].x,l[i].y,Q,ifin);
}
printf("%d %d\n",jfin,Lfin);
}