Submission #1280634

#TimeUsernameProblemLanguageResultExecution timeMemory
1280634historikCollecting Mushrooms (NOI18_collectmushrooms)C++20
79 / 100
2089 ms14384 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<int> pr(m + 1, 0);
        vector<pair<int, int> > sp, ma;
        for(int i = 0;i < n;i++) {
            for(int j = 0;j < m;j++) {
                if(j > 0) pr[j] = pr[j - 1];
                cin >> v[i][j];
                if(v[i][j] == 'M') {
                    ma.push_back({i, j});
                }
                if(v[i][j] == 'S') {
                    sp.push_back({i, j});
                    pr[j]++;
                }
            }
        }
        if(n == 1) {
            int cnt = 0;
            vector<int> mp(n + 1, 0);
            for(int i = 0;i < ma.size();i++) {
                int q = max(ma[i].second - d - 1, (int)0);
                int q1 = min(ma[i].second + d, (int)m - 1);

                int qq = pr[q1] - pr[q];
                if(qq >= 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...