Submission #621201

#TimeUsernameProblemLanguageResultExecution timeMemory
621201srivatsav_kannanCollecting Mushrooms (NOI18_collectmushrooms)C++14
38 / 100
41 ms9076 KiB
#include <iostream> #include <iomanip> #include <array> #include <fstream> #include <vector> #include <set> #include <queue> #include <cmath> #include <map> #include <algorithm> #include <numeric> #include <stack> #include <cstring> #include <bitset> #include <climits> #include <valarray> #include <list> #include <functional> #include <unordered_map> #define int long long int #define inf 100000000000 #define endl '\n' #define mod 998244353 using namespace std; signed main(){ int r,c,d,k; cin >> r >> c >> d >> k; char a[r+1][c+1]; int pre[r+1][c+1]; for (int i = 1; i <= r; i++){ for (int j = 1; j <= c; j++){ cin >> a[i][j]; pre[i][j] = 0; } } for (int i = 0; i <= r; i++){ for (int j = 0; j <= c; j++) pre[i][j] = 0; } for (int i = 1; i <= r; i++){ for (int j = 1; j <= c; j++){ pre[i][j] = pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+(a[i][j] == 'S'); } } int cnt = 0; for (int i = 1; i <= r; i++){ for (int j = 1; j <= c; j++){ if (a[i][j] != 'M') continue; int u = max(i-d,1LL); int v = max(j-d, 1LL); int w = min(i+d, r); int x = min(j+d, c); int cur = pre[w][x]-pre[u-1][w]-pre[w][v-1]+pre[u-1][v-1]; if (cur >= k) cnt++; } } cout << cnt << endl; }
#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...