Pagini recente » Cod sursa (job #1749375) | Cod sursa (job #2752891) | Profil Mustang | Cod sursa (job #1653946) | Cod sursa (job #3214925)
#include <fstream>
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define pmax 21
#define kmax 6
std::fstream f("tricouri.in"),g("tricouri.out",std::_S_out);
int n,m,k,p,A[32][32][8],sol;
void doit(int k,int x,int i,int p)
{
if(i==p)
{
if(!k&&sol<x&&x%p==0)
sol=x;
return ;
}
doit(k,x,i+1,p);
int j;
FOR(j,0,k)
{
if(!A[p][i][j])
return ;
x+=A[p][i][j];
doit(k-j-1,x,i+1,p);
}
}
int main()
{
int iii,ii,i,j,jj;
f>>n>>m;
FOR(iii,0,n)
{
f>>j;
FOR(i,2,pmax)
{
jj=j%i;
for(ii=kmax-1;ii&&j>A[i][jj][ii-1];ii--)
A[i][jj][ii]=A[i][jj][ii-1];
A[i][jj][ii]=j;
}
}
FOR(ii,0,m)
{
f>>k>>p;
sol=-1;
doit(k,0,0,p);
g<<sol;
}
return 0;
}