Pagini recente » Cod sursa (job #3315366) | Monitorul de evaluare | Borderou de evaluare (job #1545854) | Cod sursa (job #201788) | Cod sursa (job #3314800)
#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;
}