Cod sursa(job #1709265)

Utilizator UPB_Darius_Rares_SilviuPeace my pants UPB_Darius_Rares_Silviu Data 28 mai 2016 11:32:33
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.83 kb
#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);
}