Cod sursa(job #7049)

Utilizator DragoshZZabava Dragos DragoshZ Data 21 ianuarie 2007 12:07:45
Problema 1-sir Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 0.83 kb
#include<iostream.h>
#include<fstream.h>
fstream f("1-sir.in",ios::in);
fstream g("1-sir.out",ios::out);
int n,k,s,x[256],as,ev,nr=0;

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

int succesor()
{ if(x[k]<2&&k<=n)
	{x[k]++; return 1;}
 else
	return 0;
}

int valid()
{ return (k<=n);

}

int solutie()
{ int i,ultim=0,sum=0;
  if(k==n)
  {for(i=2;i<=k;i++)
     if(x[i]==1)
	{ultim--; sum+=ultim; }
     else
	{ultim ++; sum+=ultim;}
     if(sum==s)
	return 1;
     else
	return 0;
    }
  else
   return 0;
}

void back()
{ k=2;
  x[1]=0;
  init();
  while(k>1)
	{   do
		{  as=succesor();
		 if(as)
			ev=valid();
		}
	    while(as&&!ev);
	    if(as)
		if(solutie())
			nr++;
		else
			{k++;init();}
	    else
		k--;
	}
}


int main()
{f>>n>>s;
 back();
 g<<(nr%194767);
 f.close();
 g.close();
return 1;}