Cod sursa(job #1709342)

Utilizator SegfaultTamersUPB SegFaultTamers SegfaultTamers Data 28 mai 2016 11:52:31
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.01 kb
#include <stdio.h>
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;
 
long long n;
long long a[1000024];
long long count = 0;

int wtf(int i)
{
  count++;
  if (count >= 19997) {
    count -= 19997;
  }
  if (i == n - 1) {
    return a[i];
  }
  if (a[i] < wtf(i + 1)) {
    return a[i];
  } else {
    int x = wtf(i + 1);
    return x;
  }
}

int main()
{
  FILE *fin = fopen("twoton.in", "r");
  FILE *fout = fopen("twoton.out", "w");
  fscanf(fin, "%d", &n);
  // n = 30;
  // srand(time(NULL));
  for (long long i = 0; i < n; ++i) {
    fscanf(fin, "%d", &a[i]);
    // a[i] = rand() % 1000;
    // cout << a[i] << ' ';
  }

  long long memo[1000024];
  memo[n - 1] = 1;
  long long min = a[n - 1];
  for (long long i = n - 2; i >= 0; --i) {
    if (a[i] < min) {
      memo[i] = memo[i + 1] + 1;
      min = a[i];
    } else {
      memo[i] = 2 * memo[i + 1] + 1;
    }

    memo[i] %= 19997;
  }

  fprintf(fout, "%d\n", memo[0]);
  // fprlong longf(fout, "%d\n", count);
  fclose(fin);
  fclose(fout);
}