#include <stdio.h> typedef struct node { int l,r; }node; int main(void) { int t,n; scanf("%d",&t); node xj[50000]; while(t--) { scanf("%d",&n); int i,j = 0,k = 0,maxlen = 0,sum; for(i = 0;i < n;i++) { scanf("%d%d",&xj[i].l,&xj[i].r); if(maxlen < xj[i].r - xj[i].l) maxlen = xj[i].r - xj[i].l; } sum = xj[n - 1].r - xj[0].l; if(sum % maxlen != 0) printf("NO\n"); else { int max = sum / maxlen,index = 0; int temp = 0; while(1) { // printf("2\n"); for(i = 1;temp != sum && i <= max;i++) { //printf("1\n"); if(temp + i * maxlen == xj[k].l) { temp += i * maxlen; // printf("1temp = %d",temp); break; } else if(temp + i * maxlen == xj[k].r || temp + i * maxlen == xj[k + 1].l) { temp += i * maxlen; if(temp == sum) { index = 2; } //printf("2temp = %d",temp); k++; break; } } if(i == max || index == 2) break; } if(i == max) printf("NO\n"); else if(index == 2) printf("YES\n"); //else // printf("index = %d\n",index); } } return 0; } |
Double click to view unformatted code.