304182026-07-05 20:25:26KristófMagiccpp17Hibás válasz 30/100229ms54548 KiB
#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ÖsszpontTesztVerdiktIdőMemória
subtask110/10
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask220/20
1Elfogadva1ms316 KiB
2Elfogadva1ms568 KiB
3Elfogadva2ms316 KiB
4Elfogadva4ms1332 KiB
5Elfogadva1ms316 KiB
subtask30/30
1Elfogadva3ms636 KiB
2Elfogadva6ms1784 KiB
3Elfogadva13ms3380 KiB
4Elfogadva27ms6196 KiB
5Hibás válasz24ms6496 KiB
subtask40/40
1Hibás válasz23ms6208 KiB
2Elfogadva19ms5684 KiB
3Elfogadva17ms3380 KiB
4Elfogadva43ms9524 KiB
5Elfogadva229ms54548 KiB
6Elfogadva203ms54460 KiB
7Elfogadva50ms11176 KiB
8Elfogadva61ms12488 KiB