Cod sursa(job #858041)

Utilizator asstasticAsstastic asstastic Data 18 ianuarie 2013 14:47:28
Problema Secventa 5 Scor 0
Compilator cpp Status done
Runda ichb-locala-2013-10 Marime 0.82 kb
#include<iostream>
#include<fstream>

using namespace std;

int n, st[100], v[100], bun, l, u, tot;


void init(int k){
	st[k]=0;
}

int succesor(int k){
	if(st[k]<n){
		st[k]+=1;
		return 1;
	}
	return 0;
}

int valid(int k){
	int i, j;
	bun=1;
	for(i=1; i<=k; i++)
		for(j=i+1; j<=k; j++)
			if(v[st[i]]!=v[st[j]]) bun++;
	for(i=1; i<k; i++){
		if(st[i]>=st[k]) return 0;
		if(st[i+1]!=st[i]+1) return 0;
	}
	return 1;
}

int solutie(int k){
	return (k<=n)&&(bun>=l);
}

void tipar(int k){
	tot++;
}


void bk(int k){
	init(k);
	while(succesor(k))
		if(valid(k)){
			if(solutie(k))
				tipar(k);
				bk(k+1);
		}
}

int main(){
	int i;
	ifstream f("secv5.in");
	ofstream g("secv5.out");
	tot=0;
	f>>n>>l>>u;
	for(i=1; i<=n; i++) f>>v[i];
	bk(1);
	g<<tot;
	return 0;
	
}