Submission #580241

#TimeUsernameProblemLanguageResultExecution timeMemory
580241HeyYouNotYouYouBitaro the Brave (JOI19_ho_t1)C++14
50 / 100
1029 ms123048 KiB
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 3001,INF=1e12;
char arr[N][N];
vector<pair<int,int>>jew;
vector<int>ob[N],col[N];
int32_t main()
{
  //freopen("abc.in", "r", stdin);
  int h , w;
  cin >> h >> w;
  for(int i = 0 ; i < h  ; i ++){
    for(int j = 0 ; j < w; j ++){
      cin>>arr[i][j];
      if(arr[i][j]=='J'){
        jew.push_back({i,j});
      }
      else if(arr[i][j]=='O')
        ob[i].push_back(j);
      else if(arr[i][j]=='I'){
        col[j].push_back(i);
      }
    }
  }
  int ans=0;
  for(auto e : jew)
  {
    auto it = lower_bound(ob[e.first].begin(),ob[e.first].end(),e.second);
    auto it2 = lower_bound(col[e.second].begin(),col[e.second].end(),e.first);
    ans+=(ob[e.first].size()-(it-ob[e.first].begin())) * (col[e.second].size()-(it2-col[e.second].begin()));
  }
  cout<<ans<<endl;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...