답안 #666740

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
666740 2022-11-29T13:40:54 Z Ai7081 Collecting Mushrooms (NOI18_collectmushrooms) C++17
0 / 100
15 ms 16656 KB
#include <bits/stdc++.h>
using namespace std;

int r, c, d, k, out;
string s;
vector<vector<int>> sum;
vector<pair<int, int>> vp;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin >> r >> c >> d >> k;
    sum.resize(r+5, vector<int>(c+5));// = vector<int>(r+5, vector<int>(c+5));
    for (int i=0; i<r; i++) {
        cin >> s;
        for (int j=0; j<c; j++) {
            if (s[j] == 'S') {
                int x0=max(0, i+1-d), x1=min(r+1, i+1+d+1), y0=max(0, j+1-d), y1=min(c+1, j+1+d+1);
                sum[x0][y0]++;
                sum[x0][y1]--;
                sum[x1][y0]--;
                sum[x1][y1]++;
            }
            else if (s[j] == 'M') vp.push_back({i, j});
        }
    }
    // for (int i=1; i<=r; i++) {for (int j=1; j<=c; j++) cout << sum[i][j] << ' '; cout << endl;}
    for (int i=1; i<=r; i++) for (int j=1; j<=c; j++) sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
    for (auto [x, y] : vp) if (sum[x+1][y+1] >= k) out++;
    // for (int i=1; i<=r; i++) {for (int j=1; j<=c; j++) cout << sum[i][j] << ' '; cout << endl;}
    cout << out;
    return 0;
}

/*
5 5 1 1
....M
.M...
..S..
.S...
...M.
*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 1328 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 15 ms 16656 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -