Submission #2947241
Source Code Expand
Copy
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)
#define all(x) (x).begin(),(x).end()
#pragma GCC optimize ("-O3")
using namespace std; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); }
typedef long long ll; const int inf = INT_MAX / 2; const ll infl = 1LL << 60;
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a = b; return 1; } return 0; }
//---------------------------------------------------------------------------------------------------
/*---------------------------------------------------------------------------------------------------
∧_∧
∧_∧ (´<_` ) Welcome to My Coding Space!
( ´_ゝ`) / ⌒i
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ _/ .| .|____
\/____/ (u ⊃
---------------------------------------------------------------------------------------------------*/
int H, W;
string S[2010];
int dx[4] = { 0, 1, 0, -1 }, dy[4] = { -1, 0, 1, 0 };
//---------------------------------------------------------------------------------------------------
int vis[2010][2010], vis2[2010][2010];
ll memo[2010][2010], memo2[2010][2010];
ll dp(int x, int y, int d) {
if (vis[y][x]) return memo[y][x];
int xx = x + dx[d], yy = y + dy[d];
if (0 <= xx and xx < W and 0 <= yy and yy < H) {
if (S[y][x] == '.' and S[yy][xx] == '.') {
vis[y][x] = 1;
return memo[y][x] = dp(xx, yy, d) + 1;
}
}
vis[y][x] = 1;
return memo[y][x] = 0;
}
ll dp2(int x, int y, int d) {
if (vis2[y][x]) return memo2[y][x];
int xx = x + dx[d], yy = y + dy[d];
if (0 <= xx and xx < W and 0 <= yy and yy < H) {
if (S[y][x] == '.' and S[yy][xx] == '.') {
vis2[y][x] = 1;
return memo2[y][x] = dp2(xx, yy, d) + dp(xx, yy, (d + 3) % 4);
}
}
vis2[y][x] = 1;
return memo2[y][x] = 0;
}
//---------------------------------------------------------------------------------------------------
void _main() {
cin >> H >> W;
rep(y, 0, H) cin >> S[y];
ll ans = 0;
rep(d, 0, 4) {
rep(y, 0, H) rep(x, 0, W) vis[y][x] = vis2[y][x] = 0;
rep(y, 0, H) rep(x, 0, W) ans += dp2(x, y, d);
}
cout << ans << endl;
}
Submission Info
Submission Time |
|
Task |
C - 右折 |
User |
hamayanhamayan |
Language |
C++14 (GCC 5.4.1) |
Score |
400 |
Code Size |
2653 Byte |
Status |
AC |
Exec Time |
474 ms |
Memory |
99456 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
400 / 400 |
Status |
|
|
Set Name |
Test Cases |
Sample |
s1.txt, s2.txt, s3.txt |
All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, s1.txt, s2.txt, s3.txt |
Case Name |
Status |
Exec Time |
Memory |
01.txt |
AC |
303 ms |
99072 KB |
02.txt |
AC |
303 ms |
99072 KB |
03.txt |
AC |
304 ms |
99072 KB |
04.txt |
AC |
302 ms |
99072 KB |
05.txt |
AC |
381 ms |
99072 KB |
06.txt |
AC |
384 ms |
99200 KB |
07.txt |
AC |
381 ms |
99072 KB |
08.txt |
AC |
381 ms |
99072 KB |
09.txt |
AC |
472 ms |
99328 KB |
10.txt |
AC |
470 ms |
99456 KB |
11.txt |
AC |
472 ms |
99328 KB |
12.txt |
AC |
472 ms |
99328 KB |
13.txt |
AC |
129 ms |
99072 KB |
14.txt |
AC |
129 ms |
99200 KB |
15.txt |
AC |
471 ms |
99456 KB |
16.txt |
AC |
474 ms |
99456 KB |
17.txt |
AC |
81 ms |
70400 KB |
18.txt |
AC |
80 ms |
70400 KB |
19.txt |
AC |
98 ms |
70400 KB |
20.txt |
AC |
98 ms |
70400 KB |
21.txt |
AC |
385 ms |
99200 KB |
22.txt |
AC |
385 ms |
99200 KB |
23.txt |
AC |
383 ms |
99072 KB |
24.txt |
AC |
384 ms |
99200 KB |
25.txt |
AC |
389 ms |
99328 KB |
26.txt |
AC |
390 ms |
99328 KB |
27.txt |
AC |
390 ms |
99328 KB |
28.txt |
AC |
389 ms |
99200 KB |
29.txt |
AC |
2 ms |
6400 KB |
30.txt |
AC |
2 ms |
6400 KB |
31.txt |
AC |
2 ms |
4352 KB |
32.txt |
AC |
2 ms |
6400 KB |
33.txt |
AC |
2 ms |
4352 KB |
34.txt |
AC |
2 ms |
4352 KB |
35.txt |
AC |
2 ms |
4352 KB |
36.txt |
AC |
2 ms |
6400 KB |
s1.txt |
AC |
2 ms |
6400 KB |
s2.txt |
AC |
2 ms |
6400 KB |
s3.txt |
AC |
2 ms |
6400 KB |