Advertisement
royalsflush

Referência para LA 3537 (Luiza)

Apr 6th, 2012
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int n;
  6. int table[15][15];
  7. int d;
  8. bool good;
  9. int up[15], left[15];
  10.  
  11. bool check() {
  12.     for (int i=0; i<n; i++)
  13.         for (int j=0; j<n; j++)
  14.             if (table[i][j]!=up[j]+left[i])
  15.                 return false;
  16.     return true;
  17. }
  18.  
  19. bool tryP(int p) {
  20.     up[0]=p;
  21.    
  22.     for (int i=0; i<n; i++)
  23.         left[i]=table[i][0]-up[0];
  24.  
  25.     for (int i=1; i<n; i++)
  26.         up[i]=table[0][i]-left[0];
  27.    
  28.     return check();
  29. }
  30.  
  31. int main() {
  32.     scanf("%d", &d);
  33.  
  34.     for (int it=0; it<d; it++) {
  35.         scanf("%d", &n);
  36.         good=false;
  37.        
  38.         for (int i=0; i<n; i++)
  39.             for (int j=0; j<n; j++)
  40.                 scanf("%d", &table[i][j]);
  41.  
  42.         for (int p=-10000; p<=10000; p++)
  43.             if (tryP(p)) {
  44.                 good=true;
  45.                 break;
  46.             }
  47.  
  48.  
  49.         printf("%d. %s\n", it+1, good? "YES":"NO");
  50.     }
  51.    
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement