#include <stdio.h> #include <stdlib.h> int l[105], r[105]; bool a[50005]; bool good(int min, int n) { for (int i = 0; i <= min; i++) { for (int j = 1; j < 50001; j++) { int count = 0; for (int li = 1; i + j * li < 50001; li++) { int l1 = i + j * (li - 1); int r1 = i + j * li; int c = 0; for (int k = 0; k < n; k++) { if (l1 <= l[k] && r1 >= r[k]) c++; } if (c == 1) { count++; } else { break; } } if (count == n) { puts("YES"); return true; } } } return false; } int main() { int t, n; scanf("%d", &t); while (t--) { for (int i = 0; i < 50005; i++) { a[i] = false; } scanf("%d", &n); int min = 50005, max; for (int i = 0; i < n; i++) { scanf("%d%d", &l[i], &r[i]); if (l[i] < min) min = l[i]; } bool con = true; for (int i = 0; i < n && con; i++) for (int j = 0; j < n; j++) { if (i != j) { if (r[i] <= l[j] || r[j] <= l[i]) {} else { con = false; break; } } } if (con == false) { puts("NO"); continue; } if (!good(min, n)) { puts("NO"); } } } |
Double click to view unformatted code.