View Code of Problem 6

#include "stdio.h"

void main()
{
	int l[50000],r[50000];
	int i,j;
	int n,t;
	int count;
	int max,sum;
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		scanf("%d",&n);
		for(j=0;j<n;j++)
		{
			scanf("%d%d",&l[j],&r[j]);
		}
		max=r[0]-l[0];
		for(j=0;j<n;j++)				//每次跳的距离就是区间最大差
		{
			if(max<r[j]-l[j])
				max=r[j]-l[j];
		}
		sum=l[0];					//第一格位置开跳
		count=0;
		for(j=1;j<n;j++)				
		{
			sum=sum+max;
			if(sum>l[j])			//==才能恰好吻合
			{
				count++;
				break;
			}
		}
		if(count==0)
			printf("YES\n");
		else
			printf("NO\n");
	}
}

Double click to view unformatted code.


Back to problem 6