Cod sursa(job #2964173)

Utilizator Chris_BlackBlaga Cristian Chris_Black Data 12 ianuarie 2023 15:58:30
Problema Zoo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("inv.in");
ofstream cout("inv.out");
const int N = 100009, mod = 9917,Inf = 0x3f3f3f3f;
int n,ans;
vector<int> v,aib(N),aux;
void update(int poz)
{
    for(int i = poz;i<=n;i+=i&-i)
        aib[i] += 1;
}
int query(int poz)
{
    int sum = 0;
    for(int i=poz;i;i-=i&-i)
        sum+=aib[i];
    return sum;
}
int query(int st,int dr)
{
    return query(dr) - query(st-1);
}
int main()
{
    int x;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>x;
        v.push_back(x);
    }

    ///NORMALIZARE
    aux = v;
    sort(aux.begin(),aux.end());
    for(int i=0;i<n;++i)
        v[i] = lower_bound(aux.begin(),aux.end(),v[i]) - aux.begin() + 1;

    ///REZOLVARE
    for(int i=0;i<n;++i)
    {
        ans += query(v[i]+1,n); /// caut cate nr mai mari am intalnit deja
        ans = ans%mod;
        update(v[i]);///marchez la ca am intalnit inca un nr
    }

    cout<<ans;
    return 0;
}