Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- int n;
- int table[15][15];
- int d;
- bool good;
- int up[15], left[15];
- bool check() {
- for (int i=0; i<n; i++)
- for (int j=0; j<n; j++)
- if (table[i][j]!=up[j]+left[i])
- return false;
- return true;
- }
- bool tryP(int p) {
- up[0]=p;
- for (int i=0; i<n; i++)
- left[i]=table[i][0]-up[0];
- for (int i=1; i<n; i++)
- up[i]=table[0][i]-left[0];
- return check();
- }
- int main() {
- scanf("%d", &d);
- for (int it=0; it<d; it++) {
- scanf("%d", &n);
- good=false;
- for (int i=0; i<n; i++)
- for (int j=0; j<n; j++)
- scanf("%d", &table[i][j]);
- for (int p=-10000; p<=10000; p++)
- if (tryP(p)) {
- good=true;
- break;
- }
- printf("%d. %s\n", it+1, good? "YES":"NO");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement