#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;
map<vector<int>,int> seen;
vector<int> base(k,0);
seen[base]=1;
for(int i=0;i<n;i++)
{
vector<int> dif(k);
for(int type=1;type<=k;type++)
{
dif[type-1]=pref[i][type]-pref[i][1];
}
int cnt=seen[dif];
ans+=cnt;
seen[dif]++;
}
//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 | 316 KiB | ||||
| subtask2 | 20/20 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 568 KiB | ||||
| 3 | Elfogadva | 2ms | 316 KiB | ||||
| 4 | Elfogadva | 4ms | 1332 KiB | ||||
| 5 | Elfogadva | 1ms | 316 KiB | ||||
| subtask3 | 0/30 | ||||||
| 1 | Elfogadva | 3ms | 636 KiB | ||||
| 2 | Elfogadva | 6ms | 1784 KiB | ||||
| 3 | Elfogadva | 13ms | 3380 KiB | ||||
| 4 | Elfogadva | 27ms | 6196 KiB | ||||
| 5 | Hibás válasz | 24ms | 6496 KiB | ||||
| subtask4 | 0/40 | ||||||
| 1 | Hibás válasz | 23ms | 6208 KiB | ||||
| 2 | Elfogadva | 19ms | 5684 KiB | ||||
| 3 | Elfogadva | 17ms | 3380 KiB | ||||
| 4 | Elfogadva | 43ms | 9524 KiB | ||||
| 5 | Elfogadva | 229ms | 54548 KiB | ||||
| 6 | Elfogadva | 203ms | 54460 KiB | ||||
| 7 | Elfogadva | 50ms | 11176 KiB | ||||
| 8 | Elfogadva | 61ms | 12488 KiB | ||||