Cod sursa(job #24393)

Utilizator HolyBladeOld Radu HolyBlade Data 2 martie 2007 11:00:28
Problema Tricouri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<iostream.h>
#include<fstream.h>
typedef int stiva[100];
int n,x,v[100],max,s=0,p;
stiva st; 
ifstream f("tricouri.in");
ofstream g("tricouri.out");
void init(int k)
{if(k==1)
  st[k]=0;
 else
  st[k]=st[k-1];
}
 int succesor(int k)
 {if(st[k]<n-x+k)
   {st[k]=st[k]+1;return 1;}
  else
   return 0;
  }
 int valid()
  {return 1;}
 int solutie(int k)
 {return k==x;}
 void tipar()
 {s=0;
  for(int i=1;i<=x;i++)
   s=s+v[st[i]];
  if((s>max)&&(s%p==0))
   max=s;
 }
 void bt(int k)
 {init(k);
  while(succesor(k))
    if(valid())
     if(solutie(k))
       tipar();
     else bt(k+1);
 }
 int main()
 {int m,a;
  f>>n;
  f>>m;
  for(int j=1;j<=n;j++)
    {f>>a;
     v[j]=a;
     }
  for(j=1;j<=m;j++)
   {f>>x;
    f>>p;
    max=0;
    bt(1);
    if(max!=0)
     g<<max<<'\n';
    else
    g<<"-1"<<'\n';
    }
  f.close();g.close();
  return 0;
 }