Pagini recente » Cod sursa (job #4750) | Cod sursa (job #3261574) | Istoria paginii preoni-2008/runda-4/9 | Cod sursa (job #656487) | Cod sursa (job #1709110)
#include <stdio.h>
#define NMax 1000050
#define LMax 100010
#define zeros(x) (x & (x - 1) ^ x )
const int mod = 19997;
int N;
int A[NMax];
int arb[LMax];
void update( int x, int val ) {
for (; x < LMax ; x += zeros(x))
arb[x] += val;
}
int query( int x ) {
int res = 0;
for (; x > 0; x -= zeros(x))
res += arb[x];
return res;
}
int main() {
freopen("twoton.in", "r", stdin);
freopen("twoton.out", "w", stdout);
scanf("%d", &N);
for ( int i = 1; i <= N; ++ i )
scanf("%d", &A[i]);
int res = 0;
int p2 = 1;
for ( int i = N; i > 0; -- i ) {
if ( query(A[i]) || i == N ) {
res += p2;
if ( res >= mod )
res -= mod;
}
update(A[i], 1);
p2 += p2;
if ( p2 >= mod )
p2 -= mod;
}
printf("%d\n", res);
return 0;
}