View Code of Problem 6

#include<stdio.h>
int T,n,trapleft[50000],trapright[50000],i,j,k;
int maxlen()
{
    int max=trapright[0];
    for(k=1;k<n;k++)
        if(max<trapright[k]) max=trapright[k];
    return max;
}
void judge()
{
    int dis,location,l,flag;
    location=0;
    l=0;
    flag=1;
    for(dis=1;dis<=maxlen();dis++)
    {
        while(location<maxlen())
        {
        location+=dis;
        if(location>=trapright[l]&&location>=trapleft[l+1])
            l++;
        else if(location>=trapright[l+2])
            {flag=0;break;}
        else if(location<=trapright[l]&&location>=trapleft[l])
            {flag=0;break;}
        else if(location<=trapright[l+1]&&location>=trapleft[l+1])
            {flag=0;break;}
        }
    }
    if(flag==1) printf("YES\n");else printf("NO\n");
}
int main()
{
    scanf("%d",&T);
    for(i=0;i<T;i++)
    {
        scanf("%d",&n);
        for(j=0;j<n;j++)
        {
            scanf("%d%d",&trapleft[j],&trapright[j]);
        }
        judge();
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 6