Cod sursa(job #262988)

Utilizator curcubeuPop Simina curcubeu Data 19 februarie 2009 20:14:18
Problema Text Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
   1. #include <fstream>  
   2.   
   3. using namespace std;  
   4.   
   5. unsigned int N, S, posib = 0, suma = 0;  
   6. unsigned int sir[1001];  
   7. unsigned int nr[6];  
   8.   
   9.   
  10. void read ();  
  11. void back (int, int);  
  12. void write ();  
  13.   
  14. int main ()  
  15. {  
  16.     read ();  
  17.     back (1, 1);  
  18.     write ();  
  19.     return 0;  
  20. }  
  21.   
  22. void back (int p, int k)  
  23. {  
  24.     unsigned int pval;  
  25.     for (pval = p; pval <= N; pval++)  
  26.     {  
  27.         if (suma + sir[pval] <= S)  
  28.         {  
  29.             nr[k] = pval;  
  30.             suma += sir[pval];  
  31.             if (k == 5)  
  32.             {  
  33.                 if (suma == S) posib++;  
  34.             }  
  35.             else if (k < 5)  
  36.             {  
  37.                 back (pval + 1, k + 1);  
  38.             }  
  39.             suma -= sir[pval];  
  40.         }  
  41.     }  
  42. }  
  43.   
  44. void read ()  
  45. {  
  46.     unsigned int i;  
  47.     ifstream fi ("take5.in");  
  48.     fi >> N >> S;  
  49.     for (i = 1; i <= N; i++)  
  50.     {  
  51.         fi >> sir[i];  
  52.         if (sir[i] > S)  
  53.         {  
  54.             i--;  
  55.             N--;  
  56.         }  
  57.     }  
  58.     fi.close();  
  59. }  
  60.   
  61. void write ()  
  62. {  
  63.     ofstream fo ("take5.out");  
  64.     fo << posib << endl;  
  65.     fo.close ();  
  66. }