Cod sursa(job #1709192)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 28 mai 2016 11:13:07
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.85 kb
#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);
}