답안 #704240

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
704240 2023-03-02T01:40:21 Z AaW Dijamant (COCI22_dijamant) C++14
70 / 70
105 ms 31316 KB
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define endl '\n'
#define AI(x) begin(x),end(x)
#ifdef DEBUG 
#define debug(args...) LKJ("\033[1;32m[ "+string(#args)+" ]\033[0m", args)
template<class I> void LKJ(I&&x){ cerr << x << '\n'; }
template<class I, class...T> void LKJ(I&&x, T&&...t){ cerr << x << ", ", LKJ(t...); }
template<class I> void OI(I a, I b){ while(a < b) cerr << *a << " \n"[next(a) == b], ++a; }
#else
#define debug(...) 0
#define OI(...) 0
#endif
#define _ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

signed main(){_
	int n, m;
	cin >> n >> m;
	vector<vector<int>> g(n, vector<int>(m, 0));
	vector<vector<int>> pre(n, vector<int>(m, 0));
	int ans = 0;
	

	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			char temp; cin >> temp;
			g[i][j] = (temp == '#');
			pre[i][j] = pre[i][j-1] + g[i][j];
		}
	}
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			if (!g[i][j]) continue;
			int l = j - 1, r = j + 1, k = i + 1;
			bool flag = 1;
			while (l >= 0 && r < m && k < n) {
				if (!g[k][l] || !g[k][r]) {
					// cerr << "RRR";
					// debug(i, j, l, r, k);

					//debug(l, r, k);
					break;
				}
				if (pre[k][r] - pre[k][l] > 1){
					break;
				}	
				l -= 1;
				r += 1;
				k += 1;
			}
			if (!flag) continue;
			r -= 2;
			l += 2;
			while (k < n && r >= l) {
				if (!g[k][l] || !g[k][r] || pre[k][r] - pre[k][l] > 1){
					flag = 0;
			//		cerr << "KKK" << endl;
			//		debug(l, r, k, pre[k][r], pre[k][l]);
					break;
				}
				r -= 1;
				l += 1;
				k += 1;
			}
			//debug(flag);
			if (l <= r || k < i + 2) flag = 0;
			ans += flag;
			//if (flag) debug(i, j, l, r, k);
			//cerr << "\n\n";
		}
	}
	cout << ans << endl;



	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 0 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 0 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 0 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 0 ms 340 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 75 ms 29164 KB Output is correct
15 Correct 90 ms 29936 KB Output is correct
16 Correct 105 ms 27588 KB Output is correct
17 Correct 77 ms 27528 KB Output is correct
18 Correct 104 ms 31316 KB Output is correct
19 Correct 71 ms 26580 KB Output is correct
20 Correct 84 ms 31308 KB Output is correct
21 Correct 70 ms 26580 KB Output is correct
22 Correct 86 ms 28244 KB Output is correct
23 Correct 82 ms 26836 KB Output is correct
24 Correct 89 ms 28920 KB Output is correct
25 Correct 67 ms 26452 KB Output is correct
26 Correct 79 ms 27476 KB Output is correct