Cod sursa(job #67524)

Utilizator megabyteBarsan Paul megabyte Data 25 iunie 2007 11:15:04
Problema P-sir Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda Finala, Clasele 11-12 Marime 0.63 kb
#include <cstdio>
#define INF "psir.in"
#define OUF "psir.out"
#define NMAX 32

inline int psir(int a[],int comb)
{
	register int k,s[NMAX],d=0;
	for(k=0;k<32;++k)
		if(comb&(1<<k)) { ++d;s[d]=a[k+1]; }
	if(d>2)
	{
	for(k=3;k<=d;++k) if((s[k]-s[k-1])*(s[k]-s[k-2])>0) return 0;
	return 1;
	}
	else return 0;
}

int main()
{
	FILE *in,*out;
	int a[NMAX],i,n,c,dim;
	long long total=0;
	in=fopen(INF,"r");
	out=fopen(OUF,"w");
	fscanf(in,"%d",&n);
	for(i=1;i<=n;++i) fscanf(in,"%d",a+i);
	if(n>1)
	{
		total+=n*(n-1)/2;
		dim=1<<n;
		for(c=1;c<dim;++c) if(psir(a,c)) ++total;
	}
	fprintf(out,"%lld\n",total);
	fclose(in);fclose(out);
	return 0;
}