Cod sursa(job #1709527)

Utilizator bogdan0707Matei Bogdan bogdan0707 Data 28 mai 2016 12:43:30
Problema Twoton Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.99 kb
#include <stdio.h>

int n;
int a[1000024];
int w[1000024];
int count = 0;

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

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]);
	}
	int min = a[0], minPos = 0;
	for (int i = 1; i < n; i++)
	{
		if (min >= a[i])
		{
			min = a[i];
			minPos = i;
		}
	}
	w[0] = 1;
	count = 1;
	for (int i = 1; i < n; i++)
	{
		if (minPos != n - 1 && i - 1 == minPos)
			w[i] = w[i - 1];
		else w[i] = 2 * w[i - 1];
		count += w[i];
		count %= 19997;
	}
	bool k = true;
	for (int i = 0; i < n - 1; i++)
		if (a[i]>a[i + 1])
			k = false;
	if (k)
		count = n;
//	printf("%d",wtf(0));
	fprintf(fout, "%d\n", count);
	fclose(fin);
	fclose(fout);
}