Cod sursa(job #1490406)

Utilizator akaprosAna Kapros akapros Data 23 septembrie 2015 14:41:50
Problema Garaj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#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;
}