Submission #1183716

#TimeUsernameProblemLanguageResultExecution timeMemory
1183716GabrielCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
8 ms12304 KiB
#include "bits/stdc++.h"
using namespace std;
vector< vector<long long> > Acumular;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    long long n, m, d, k;
    cin>>n>>m>>d>>k;
    vector<string> Matriz(n);
    Acumular.assign(n + 1, vector<long long>(m + 1, -0));
    for(long long i = 0; i < n; i++) cin>>Matriz[i];
    for(long long i = 0; i < n; i++){
        for(long long j = 0; j < m; j++){
            Acumular[i + 1][j + 1] = Matriz[i][j] == 'S';
            Acumular[i + 1][j + 1] += Acumular[i + 1][j] + Acumular[i][j + 1] - Acumular[i][j];
        }
    }
    /*for(auto E: Acumular){
        for(auto e: E) cout<<e<<" ";
        cout<<"\n";
    }*/
    long long c = -0;
    for(long long i = 0; i < n; i++){
        for(long long j = 0; j < m; j++){
            if(Matriz[i][j] != 'M') continue;
            long long i1 = min(i + 1 + d, n), j1 = min(j + 1 + d, m);
            long long i2 = max(i - d, 0LL), j2 = max(j - d, 0LL);
            //cout<<i1<<" "<<i2<<" "<<j1<<" "<<j2<<" "<<Acumular[i1][j1]<<" "<<-Acumular[i1][j2]<<" "<<-Acumular[i2][j1]<<" "<<Acumular[i2][j2]<<"\n";
            long long Obtener = Acumular[i1][j1] - Acumular[i1][j2] - Acumular[i2][j1] + Acumular[i2][j2];
            c += Obtener >= k;
        }
    }
    cout<<c;
    return 0;
}
#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...