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 |
I just can't figure out why ALWAYS WA.../************************************************************************* * File Name: poj3251.cpp * Author: razrLeLe * Mail: razrlele@outlook.com * Homepage: http://razrlele.com * Created Time: 2014年11月06日 星期四 15时29分02秒 ************************************************************************/ #include "vector" #include "set" #include "deque" #include "queue" #include "algorithm" #include "functional" #include "iostream" #include "cstdio" #include "cmath" #include "cstdlib" #include "string" #include "cstring" #include "string.h" using namespace std; #define INF 0x3f3f3f3f const int maxn = 110; char grid[maxn][maxn]; int gridnum; int maxarea; int main() { #ifdef LOCAL freopen("/home/razrlele//build/data.txt", "r", stdin); freopen("/home/razrlele/build/out.txt", "w", stdout); #endif scanf("%d", &gridnum); for(int i = 1; i <= gridnum; i++) { getchar(); for(int j = 1;j <= gridnum; j++) { scanf("%c", &grid[i][j]); } } maxarea = 0; for(int i = 1; i <= gridnum; i++) for(int j = 1; j <= gridnum; j++) { if(grid[i][j] == 'J') { for(int k = gridnum; k >= i; k--) for(int m = 1; m <= gridnum; m++) { if(grid[k][m] == 'J' && !(i==k&&j==m)) { int p = i-k , q = j-m; int dis = p*p+q*q; if((dis>>1) <= maxarea) continue; int x1 =(i-j+m+k)>>1; int y1 = i+m-x1; int x2 = (j+i+k-m)>>1; int y2 = j+k-x2; #define ok(a,b,c,d) (a>0&&a<=gridnum&&b>0&&b<=gridnum&&c>0&&c<=gridnum&&d>0&&d<=gridnum) if(ok(y1, x1, x2, y2) && ((grid[x1][y1]=='J' && grid[x2][y2] != 'B') || (grid[x1][y1] != 'B' && grid[x2][y2] == 'J'))) maxarea = (dis>>1); } } } } printf("%d\n", maxarea); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator