Submission #867179

#TimeUsernameProblemLanguageResultExecution timeMemory
867179dpsaveslivesBitaro the Brave (JOI19_ho_t1)C++17
100 / 100
147 ms115536 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; const int MAXN = 3010; int grid[MAXN][MAXN]; int ing[MAXN][MAXN],orb[MAXN][MAXN]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int H,W; cin >> H >> W; //count for every J how many O's are in the row after it and how many I's are in the column after it for(int i = 0;i<H;++i){ string s; cin >> s; for(int j = 0;j<W;++j){ grid[i][j] = s[j]; } } for(int i = 0;i<H;++i){ int cnt = 0; for(int j = W-1;j>=0;--j){ if(grid[i][j] == 'J'){ orb[i][j] = cnt; } else if(grid[i][j] == 'O'){ cnt++; } } } for(int i = 0;i<W;++i){ int cnt = 0; for(int j = H-1;j>=0;--j){ if(grid[j][i] == 'J'){ ing[j][i] = cnt; } else if(grid[j][i] == 'I'){ cnt++; } } } ll ans = 0; for(int i = 0;i<H;++i){ for(int j = 0;j<W;++j){ if(grid[i][j] == 'J'){ //cout << ing[i][j] << " " << orb[i][j] << "\n"; ans += ing[i][j]*orb[i][j]; } } } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...