やるだけ
- class FindingSquareInTable {
- public:
- int findMaximalSquare(vector <string> table)
- {
- const int H = table.size();
- const int W = table[0].size();
- set<lli> s;
- for (lli i = 0; i * i <= 999999999LL; ++i) {
- s.insert(i * i);
- }
- lli mx = -1;
- for (int i = 0; i < H; ++i) {
- for (int j = 0; j < W; ++j) {
- for (int a = -10; a <= +10; ++a) {
- for (int b = -10; b <= +10; ++b) {
- if (a == 0 && b == 0) continue;
- string t;
- int v = i;
- int u = j;
- while (0 <= v && v < H && 0 <= u && u < W) {
- t += table[v][u];
- v += a;
- u += b;
- lli n = atoll(t.c_str());
- if (s.count(n)) mx = max(mx, n);
- }
- }
- }
- }
- }
- return mx;
- }
- };