Submission #1258814

#TimeUsernameProblemLanguageResultExecution timeMemory
1258814hello10Bitaro the Brave (JOI19_ho_t1)C++20
100 / 100
803 ms91892 KiB
#include<bits/stdc++.h> #define int long long #define endl "\n" #define MAXN 3005 #define inf 1e15 using namespace std; int n, m, res=0; char a[MAXN][MAXN]; vector<int> mpo[MAXN], mpi[MAXN]; signed main(){ cin>>n>>m; for (int i=1; i<=n; i++){ for (int j=1; j<=m; j++){ cin>>a[i][j]; if (a[i][j]=='O'){ mpo[i].push_back(j); } else if (a[i][j]=='I'){ mpi[j].push_back(i); } } } for (int i=1; i<=n; i++){ sort (mpo[i].begin(), mpo[i].end()); } for (int i=1; i<=m; i++){ sort (mpi[i].begin(), mpi[i].end()); } for (int i=1; i<=n; i++){ for (int j=1; j<=m; j++){ if (a[i][j]=='J'){ int x=upper_bound(mpo[i].begin(), mpo[i].end(), j)-mpo[i].begin(); int y=upper_bound(mpi[j].begin(), mpi[j].end(), i)-mpi[j].begin(); // cout<<i<<" "<<j<<" "<<x<<" "<<y<<endl; // // for (auto x:mpo[i]){ // cout<<x<<" "; // } // cout<<endl; x=(int)mpo[i].size()-x; y=(int)mpi[j].size()-y; res+=x*y; } } } cout<<res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...