不用考虑加o的情况也能AC
以下是未考虑加o但能AC的代码:
#include<bits/stdc++.h>
using namespace std;
const long long M=1e5+10;
int n;
string s;
long long na,oa,ia;
long long reni(string s){
int os[M], is[M];
memset(os,0,sizeof os);
memset(is,0,sizeof is);
for(int i=n;i>=0;i--){
is[i]=is[i+1];
os[i]=os[i+1];
if(s[i]=='I'){
is[i]++;
}
else if(s[i]=='O'){
os[i]+=is[i];
}
}
long long ans=0;
for(int i=0; i<n; i++){
if(s[i]=='N'){
ans+=os[i];
}
}
return ans;
}
int main(){
cin>>n;
cin>>s;
na=reni("N"+s);
ia=reni(s+"I");
cout<<max(na,ia);
}
提供hack数据:
输入:
2
NI
正确输出:
1