#include <iostream>
#include <vector>
#include <set>
#include <map>
using namespace std;
string s;
int n;
int k;
vector<vector<int>> pref;
bool check(int l,int r)// if l to r is a good range
{
int st=0;
for(int type=1;type<=k;type++)
{
if(l!=0)
{
if(type==1)st=pref[r][type]-pref[l-1][type];
else if(st!=(pref[r][type]-pref[l-1][type]))return false;
}
else
{
if(type==1)st=pref[r][type];
else if(st!=(pref[r][type]))return false;
}
}
return true;
}
int main()
{
set<char> dif;
cin>>n>>s;
for(auto x:s)dif.insert(x);
k=dif.size();
map<char,int> conv;
int id=1;
vector<int> a;
a.reserve(n);
for(auto &x:s)
{
if(conv[x]==0)
{
conv[x]=id++;
}
a.push_back(conv[x]);
}
pref.resize(n,vector<int>(k+1,0));
for(int i=0;i<n;i++)
{
for(int type=1;type<=k;type++)
{
if(i==0)break;
pref[i][type]=pref[i-1][type];
}
pref[i][a[i]]++;
}
long long ans=0;
for(int i=0;i<n;i++)
for(int j=i;j<n;j++)
ans+=check(i,j);
//cout<<check(0,1)<<"\n";
cout<<ans;
return 0;
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 10/10 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 508 KiB | ||||
| subtask2 | 20/20 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 2ms | 316 KiB | ||||
| 3 | Elfogadva | 3ms | 316 KiB | ||||
| 4 | Elfogadva | 14ms | 900 KiB | ||||
| 5 | Elfogadva | 9ms | 316 KiB | ||||
| subtask3 | 0/30 | ||||||
| 1 | Elfogadva | 54ms | 756 KiB | ||||
| 2 | Elfogadva | 861ms | 1588 KiB | ||||
| 3 | Időlimit túllépés | 1.077s | 3380 KiB | ||||
| 4 | Időlimit túllépés | 1.078s | 6196 KiB | ||||
| 5 | Időlimit túllépés | 1.088s | 6196 KiB | ||||
| subtask4 | 0/40 | ||||||
| 1 | Időlimit túllépés | 1.088s | 6380 KiB | ||||
| 2 | Elfogadva | 354ms | 2868 KiB | ||||
| 3 | Időlimit túllépés | 1.088s | 3380 KiB | ||||
| 4 | Időlimit túllépés | 1.088s | 9268 KiB | ||||
| 5 | Időlimit túllépés | 1.08s | 25140 KiB | ||||
| 6 | Időlimit túllépés | 1.085s | 25132 KiB | ||||
| 7 | Időlimit túllépés | 1.083s | 11060 KiB | ||||
| 8 | Időlimit túllépés | 1.083s | 12596 KiB | ||||