Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
N^4 水过/* * You Siki * Born to be King! */ #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<iomanip> #include<iostream> #include<algorithm> //using namespace std; const int LIMIT = 100000; char in[LIMIT], *p = in; __inline int nextInt(void) { register int res = 0; while (*p < '0' || *p > '9')++p; while (*p >= '0' && *p <= '9') res = res * 10 + *p++ - '0'; return res; } signed main(void) { #ifndef ONLINE_JUDGE freopen("bigsq.in", "r", stdin); freopen("bigsq.out", "w", stdout); #endif fread(p, 1, LIMIT, stdin); register int n = nextInt(); register int map[105][105], ans = 0; for (register int i = 1; i <= n; ++i) { while (*p == ' ' || *p == '\n')++p; for (register int j = 1; j <= n; ++j, ++p) { if (*p == '*') map[i][j] = 0; else if (*p == 'J') map[i][j] = 1; else map[i][j] = -1; } } register int x1, y1, x2, y2, x3, y3, x4, y4, a, b, t, dx, dy; for (x1 = 1; x1 <= n; ++x1) for (y1 = 1; y1 <= n; ++y1)if (~(a = map[x1][y1])) for (x2 = n; x2 >= x1; --x2) for (y2 = n; y2 >= y1 ; --y2)if (~(b = map[x2][y2])) { dx = x1 - x2, dy = y1 - y2; t = dx * dx + dy * dy; if (t > ans && (dx || dy)) { x3 = x1 - dy, y3 = y1 + dx; if (x3 > n || y3 < 1)continue; x4 = x2 - dy, y4 = y2 + dx; if (x4 > n || y4 < 1)continue; if (a + b + map[x3][y3] + map[x4][y4] > 2) ans = t; } } printf("%d\n", ans); } /* 注意不要干没意义的事,这样就不会TLE */ Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator