Cod sursa(job #1709504)

Utilizator UPB_Hulea_Ionescu_RomanNo Idea UPB_Hulea_Ionescu_Roman Data 28 mai 2016 12:38:58
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.74 kb
#include <iostream>
#include <stdio.h>
#define NMAX 1000024
#define MOD 19997
using namespace std;

int main() {
	freopen("twoton.in", "r", stdin);
	freopen("twoton.out", "w", stdout);

	int n;
	int *a = (int*)calloc(NMAX, 4);
	int *b = (int*)calloc(NMAX + 1, 4);

	scanf("%i", &n);
	for (int i = 0; i < n; ++i) {
		scanf("%d", &a[i]);
	}
	
	int min = a[n - 1];
	b[n - 1] = min;
	for (int i = n - 2; i >= 0; --i) {
		if (a[i] < min) {
			min = a[i];
		}
		b[i] = min;
	}

	int next_term = 1;
	int sum = 1;
	for (int i = 0; i < n - 1; ++i) {
		if (a[i] > b[i] || (a[i] == a[i + 1])) {
			next_term *= 2;
			next_term %= MOD;
		}
		sum += next_term;
		sum %= MOD;
	}
	printf("%d\n", sum);
	fclose(stdin);
	fclose(stdout);
}