Pagini recente » Cod sursa (job #2345544) | Cod sursa (job #2886703) | Cod sursa (job #1491898) | Cod sursa (job #4703) | Cod sursa (job #1709265)
#include <stdio.h>
int n;
int mod = 19997;
int a[1000024];
int r[1000024];
int w[1000025];
int count = 0;
void mmod( int& val ) {
if ( val >= mod )
val -= mod;
}
int wtf(int i)
{
if (i == n - 1) {
w[i] = 1;
return a[i];
}
if ( w[i] != -1 ) {
return r[i];
}
if (a[i] < wtf(i + 1)) {
w[i] = w[i + 1] + 1;
r[i] = a[i];
return a[i];
} else {
w[i] = 2 * w[i + 1] + 1;
mmod(w[i]);
r[i] = wtf(i + 1);
return r[i];
}
}
int main()
{
FILE *fin = fopen("twoton.in", "r");
FILE *fout = fopen("twoton.out", "w");
fscanf(fin, "%d", &n);
for ( int i = 0; i <= n; ++ i )
w[i] = -1;
for (int i = 0; i < n; ++i) {
fscanf(fin, "%d", &a[i]);
}
wtf(0);
fprintf(fout, "%d\n", w[0]);
fclose(fin);
fclose(fout);
}