Pagini recente » Monitorul de evaluare | Cod sursa (job #996415) | Istoria paginii runda/igorj_7 | Cod sursa (job #2292760) | Cod sursa (job #1490406)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxN 100002
#define mod 9917
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
int n, i, j, sol, aib[maxN];
int sum(int x)
{
int s = 0, i;
for (i = x; i >= 1; i -= zeros(i))
{
s = (s + aib[i]);
if (s >= mod)
s -= mod;
}
return s;
}
void add(int x)
{
int i;
for (i = x; i <= n; i += zeros(i) )
{
++ aib[i];
if (aib[i] >= mod)
aib[i] -= mod;
}
}
void read()
{
int val, i;
freopen("inv.in", "r", stdin);
scanf("%d", &n);
for (i = 1; i <= n; ++ i)
{
scanf("%d", &val);
sol = (sol + i - 1 - sum(val));
if (sol >= mod)
sol -= mod;
add(val);
}
}
void write()
{
freopen("inv.out", "w", stdout);
printf("%d", sol);
}
int main()
{
read();
write();
return 0;
}