Cod sursa(job #3314800)

Utilizator yellowGreenFatu Mihai yellowGreen Data 11 octombrie 2025 10:22:17
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("inv.in");
ofstream cout("inv.out");
const int mod = 9917;
int n,A[100005];
int aib[100005];
pair<int,int> aux[100005];
void update(int x)
{
    for(int i=x;i<=n;i+=i&(-i))
        aib[i]++;
}
long long query(int x)
{
    long long ans=0;
    for(int i=x;i>=1;i-=i&(-i))
        ans+=aib[i];
    return ans;
}
int ans;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>A[i],aux[i]={A[i],i};
    sort(aux+1,aux+n+1);
    int norm=0;
    for(int i=1;i<=n;i++)
    {
        if(aux[i].first!=aux[i-1].first)
            norm++;
        A[aux[i].second]=norm;
    }
    for(int i=1;i<=n;i++)
    {
        ans=ans+mod+query(n)-query(A[i]);
        while(ans>=mod)
            ans-=mod;
        update(A[i]);
    }
    cout<<ans;
    return 0;
}