1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| const int mxn = 1e3 + 5; int dir[][2] = { {-1,-1}, {-1, 0}, {-1, 1}, { 0,-1}, { 0, 1}, { 1,-1}, { 1, 0}, { 1, 1}, }; int n, m, tol, a[mxn][mxn];
bool ok(int x, int y) { for(int i=0; i<8; i++) { int tx = x+dir[i][0]; int ty = y+dir[i][1]; if(tx < 0 || tx >= n) continue; if(ty < 0 || ty >= m) continue; if(Abs(a[x][y] - a[tx][ty]) <= tol) return 0; } return 1; }
int main() { scanf("%d %d %d", &m, &n, &tol); map<int, int> mmp;
for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { scanf("%d", &a[i][j]); mmp[a[i][j]]++; } }
int di, dj, num = 0; for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { if(ok(i, j) && mmp[a[i][j]]==1){ num++; if(num > 1) break; di = i, dj = j; } } if(num > 1) break; }
if(num==0) printf("Not Exist\n"); else if(num==1) printf("(%d, %d): %d\n", dj+1, di+1, a[di][dj]); else printf("Not Unique\n");
return 0; }
|