제출 #1280626

#제출 시각아이디문제언어결과실행 시간메모리
1280626historikCollecting Mushrooms (NOI18_collectmushrooms)C++20
60 / 100
993 ms7124 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m, d, k; cin >> n >> m >> d >> k; vector<vector<char> > v(n, vector<char> (m)); vector<char> p(m + 1); vector<pair<int, int> > sp, ma; for(int i = 0;i < n;i++) { for(int j = 0;j < m;j++) { cin >> v[i][j]; if(v[i][j] == 'M') { ma.push_back({i, j}); p[j] = 'M'; } if(v[i][j] == 'S') { p[j] = 'S'; sp.push_back({i, j}); } } } if(n == 1) { int cnt = 0; vector<int> mp(n + 1, 0); for(int i = 0;i < m;i++) { if(p[i] == 'S') for(int j = (int)min((int)0, i - d);j <= (int)min((int)m - 1, i + d);j++) { if(p[j] == 'M') { mp[j]++; if(mp[j] == k) cnt++; } } } cout << cnt; return 0; } int cnt = 0; map<pair<int, int>, int> mp; for(int i = 0;i < sp.size();i++) { for(int j = 0;j < ma.size();j++) { int q = max(abs(sp[i].first - ma[j].first), abs(sp[i].second - ma[j].second)); if(q <= d) { mp[{ma[j].first, ma[j].second}]++; if(mp[{ma[j].first, ma[j].second}] == k) cnt++; } } } cout << cnt; } /* 1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 3 1 4 3 2 2 3 4 1 2 4 3 1 1 2 3 4 5 1 2 3 5 4 1 2 4 3 5 1 2 4 5 3 1 2 5 3 4 1 2 5 4 3 1 3 2 4 5 1 3 2 5 4 1 3 4 2 5 1 3 4 5 2 1 3 5 2 4 1 3 5 4 2 1 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...