Pagini recente » Cod sursa (job #573919) | Cod sursa (job #280658) | Cod sursa (job #141086) | Cod sursa (job #2399794) | Cod sursa (job #2964173)
#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;
}