Submission #1007379

#TimeUsernameProblemLanguageResultExecution timeMemory
1007379elotelo966Bitaro the Brave (JOI19_ho_t1)C++17
100 / 100
111 ms159244 KiB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
#define OYY LLONG_MAX
#define mod 1000000007
#define faster ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define FOR for(int i=1;i<=n;i++)
#define mid (start+end)/2
#define lim 3005
#define fi first
#define se second

int O[lim][lim],I[lim][lim];

char dizi[lim][lim];

int32_t main(){
	faster
	int n,m;cin>>n>>m;
	FOR{
		string s;cin>>s;
		for(int j=1;j<=m;j++){
			dizi[i][j]=s[j-1];
		}
	}
	
	FOR{
		for(int j=1;j<=m;j++){
			O[i][j]=O[i][j-1];
			if(dizi[i][j]=='O')O[i][j]++;
		}
	}
	
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			I[j][i]=I[j-1][i];
			if(dizi[j][i]=='I')I[j][i]++;
		}
	}
	
	int cev=0;
	
	FOR{
		for(int j=1;j<=m;j++){
			if(dizi[i][j]=='J')cev+=(O[i][m]-O[i][j])*(I[n][j]-I[i][j]);
			//cout<<(O[i][m]-O[i][j])<<" "<<(I[n][j]-I[i][j])<<endl;
		}
	}
	
	cout<<cev<<'\n';
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...