Cod sursa(job #1709116)

Utilizator UBB_RETIRED_BUT_DANGEROUSUBBTEAM UBB_RETIRED_BUT_DANGEROUS Data 28 mai 2016 10:58:00
Problema Twoton Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.71 kb
#include <stdio.h>

int n;
int a[100024];
int minim[100005];
int sol[10005];
int count = 0;

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]);
	}
	minim[n - 1] = a[n - 1];
	for (int i = n - 2; i >= 0; --i)
	{
		if (a[i] < minim[i + 1])
		{
			minim[i] = a[i];
		}
		else
		{
			minim[i] = minim[i + 1];
		}
	}

	sol[n - 1] = 1;
	for (int i = n - 2; i >= 0; --i)
	{
		if (a[i] == minim[i])
		{
			sol[i] = (1 + sol[i + 1])% 19997;
		}
		else
		{
			sol[i] = (1 + 2 * sol[i + 1])%19997;
		}
	}
	fprintf(fout, "%d\n", sol[0]);
	fclose(fin);
	fclose(fout);
}