제출 #672907

#제출 시각아이디문제언어결과실행 시간메모리
672907vuavisaoCollecting Mushrooms (NOI18_collectmushrooms)C++14
100 / 100
18 ms23896 KiB
#include<bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define ll long long
using namespace std;

const int N =  + 10;

int n, m, k, d;
vector<string> s;

vector<vector<int>> pred;
int res;

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    if (fopen("NOI18_collectmushrooms.inp", "r")) {
        freopen("NOI18_collectmushrooms.inp", "r", stdin);
        freopen("NOI18_collectmushrooms.out", "w", stdout);
    }
    cin >> n >> m >> d >> k;
    s.resize(n + 1);
    pred.resize(n + 10, vector<int> (m + 10, 0));
    for(int i = 1; i <= n; ++ i) {
        string w; cin >> w; w = ' ' + w;
        s[i] = w;
        for(int j = 1; j <= m; ++ j) {
            if(w[j] != 'S') continue;
            int le = max(j - d, 1), ri = min(j + d, m);
            int up = max(i - d, 1), down = min(i + d, n);
            ++ pred[up][le];
            -- pred[up][ri + 1];
            -- pred[down + 1][le];
            ++ pred[down + 1][ri + 1];
        }
    }
    for(int i = 1; i <= n; ++ i) {
        for(int j = 1; j <= m; ++ j) {
            pred[i][j] += pred[i - 1][j] + pred[i][j - 1] - pred[i - 1][j - 1];
            if(s[i][j] == 'M' && pred[i][j] >= k) {
                ++ res;
            }
        }
    }
    cout << res;
    return 0;
}

/// Code by vuavisao

컴파일 시 표준 에러 (stderr) 메시지

mushrooms.cpp: In function 'int32_t main()':
mushrooms.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen("NOI18_collectmushrooms.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mushrooms.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen("NOI18_collectmushrooms.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...