제출 #1003808

#제출 시각아이디문제언어결과실행 시간메모리
1003808vjudge1Ekoeko (COCI21_ekoeko)C++17
110 / 110
32 ms4320 KiB
#include<bits/stdc++.h>
using namespace std;

#define N 100010
#define M 50
#define INFLL 2000000000000000020
#define pb push_back

typedef long long ll;
typedef pair<ll,ll> pll;

map<ll,ll>freq;
map<ll,ll>cur;
vector<ll>pos[M];

ll st[N<<2];

void update(ll i,ll l,ll r,ll pos)
{
    if(pos<l || pos>r)
        return;
    if(l==r)
    {
        st[i]++;
        return;
    }
    ll nxt=(i<<1),mid=((l+r)>>1);
    update(nxt,l,mid,pos);
    update(nxt+1,mid+1,r,pos);
    st[i]=st[nxt]+st[nxt+1];
    return;
}

ll query(ll i,ll l,ll r,ll L,ll R)
{
    if(l>R || L>r)
        return 0LL;
    if(L<=l && r<=R)
        return st[i];
    ll nxt=(i<<1),mid=((l+r)>>1);
    return query(nxt,l,mid,L,R)+
           query(nxt+1,mid+1,r,L,R);
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    ll n,nn,i,mx=0,j=0,ans=0,p,x,aux;
    string S,ini,fim;

    cin >> n >> S;
    nn=2*n;
    for(i=0;i<nn;i++)
    {
        freq[S[i]]++;
    }
    for(i=0;i<nn;i++)
    {
        if(!freq[S[i]])
        {
            fim+=S[i];
            continue;
        }
        ini+=S[i];
        ans+=i-j;
        freq[S[i]]-=2;
        j++;
    }
    for(i=n-1;i>=0;i--)
    {
        x=(ll)(fim[i]-'a');
        pos[x].pb(i);
    }
    for(i=0;i<n;i++)
    {
        x=(ll)(ini[i]-'a');
        p=pos[x].back();
        pos[x].pop_back();
        aux=p;
        p+=query(1,1,n,p,n);
        ans+=p-i;
        update(1,1,n,aux);
    }
    cout << ans << endl;

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'int main()':
Main.cpp:51:15: warning: unused variable 'mx' [-Wunused-variable]
   51 |     ll n,nn,i,mx=0,j=0,ans=0,p,x,aux;
      |               ^~
#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...