Cod sursa(job #6931)

Utilizator cretuMusina Rares cretu Data 21 ianuarie 2007 10:56:55
Problema 1-sir Scor 10
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasele 11-12 Marime 0.73 kb
#include <fstream>
#define MAX 100000

using namespace std;

int n, s, sol = 0;
int suma[MAX], nr[MAX];

void DF(int nod, int deep, int tata);

int main()
{
     ifstream fin("1-sir.in");
     fin >> n >> s;
     fin.close();
     
     suma[0] = 0;
     nr[1] = 0;
     
     DF(1, 1, 0);
     
     ofstream fout("1-sir.out");
     fout << sol%194767 << "\n";
     fout.close();
     
     return 0;   
}

void DF(int nod, int deep, int tata)
{
     suma[nod] = suma[tata]+nr[nod];
     if (deep == n)
     {
         if (suma[nod] == s) sol++;
         return;         
     }
     nr[nod*2] = nr[nod]+1;
     nr[nod*2+1] = nr[nod]-1;
     DF(nod*2, deep+1, nod);     
     DF(nod*2+1, deep+1, nod);
}