Submission #870924

#TimeUsernameProblemLanguageResultExecution timeMemory
870924hungntEkoeko (COCI21_ekoeko)C++14
110 / 110
8 ms2188 KiB
#include<bits/stdc++.h>

using namespace std;

const int N = 200005;

int n;
string s;
queue<int> q[26];
int cnt[26], dem[26], BIT[N];

void update(int id)
{
    for(; id; id -= id & -id)
        BIT[id]++;
}

int get(int id)
{
    int ans = 0;
    for(; id <= n; id += id & -id)
        ans += BIT[id];
    return ans;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> n >> s;
    for(char &c : s)
    {
        c -= 'a';
        cnt[c]++;
    }
    int nn = n;
    s = ' ' + s;
    n <<= 1;
    int d = 0;
    long long ans = 0;
    int c;
    int x;
    for(int i = 1; i <= n; i++)
    {
        c = s[i];
        dem[c]++;
        if(dem[c] <= (cnt[c] >> 1))
        {
            x = ++d;
            q[c].push(d + nn);
        }
        else
        {
            x = q[c].front();
            q[c].pop();
        }
        ans += get(x);
        update(x);
    }
    cout << ans;
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:34:13: warning: array subscript has type 'char' [-Wchar-subscripts]
   34 |         cnt[c]++;
      |             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...