Pagini recente » Cod sursa (job #2068783) | Mihnea Andreescu | Cod sursa (job #1682858) | Cowfood | Cod sursa (job #1709192)
#include <stdio.h>
int n;
int a[1000024];
int count = 0;
int add[1000024], sol[1000024];
inline void add_mod(int &a, int &b) {
a += b;
if (a >= 19997) {
a -= 19997;
}
}
int wtf(int i)
{
if (add[i]) {
add_mod(count, add[i]);
return sol[i];
}
int unu = 1;
add_mod(count, unu);
add_mod(add[i], unu);
if (i == n - 1) {
sol[i] = a[i];
return a[i];
}
int res = wtf(i + 1);
add_mod(add[i], add[i + 1]);
if (a[i] < res) {
sol[i] = a[i];
return a[i];
} else {
add_mod(add[i], add[i + 1]);
sol[i] = res;
res = wtf(i + 1);
return res;
}
}
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) {
fscanf(fin, "%d", &a[i]);
}
wtf(0);
fprintf(fout, "%d\n", count);
fclose(fin);
fclose(fout);
}