Cod sursa(job #1709420)

Utilizator CodeFxSAPIENTIA CodeFx CodeFx Data 28 mai 2016 12:10:41
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.69 kb
#include <stdio.h>

int n;
int a[1000024];
int min[1000024];
long long counts[1000024];
int count = 1;

int main()
{
	FILE *fin = fopen("twoton.in", "r");
	FILE *fout = fopen("twoton.out", "w");
	int i;
	fscanf(fin, "%d", &n);
	for ( i = 0; i < n; ++i) {
		fscanf(fin, "%d", &a[i]);
	}
	min[n - 1] = a[n - 1];
	for ( i = n - 2; i >= 0; --i) {
		min[i] = (a[i] < min[i + 1] ? a[i] : min[i + 1]);
	}
	counts[0] = 1;
	for (i = 1; i < n; ++i) {
		if (a[i - 1] < min[i]) {
			counts[i] = counts[i - 1];
		}
		else {
			counts[i] = (counts[i - 1] << 1) % 19997;
		}
		count = (count + counts[i]) % 19997;
	}
	fprintf(fout, "%d\n", count);
	fclose(fin);
	fclose(fout);
	return 0;
}