Pagini recente » Cod sursa (job #2386364) | Cod sursa (job #3040710) | Cod sursa (job #449673) | emagcluj_9_2016_3 | Cod sursa (job #18394)
Cod sursa(job #18394)
#include<stdio.h>
long int v[5000001];
int main()
{
FILE *fin,*fout;
long int n,i,u=0,x,j,s,a[300001];
int m,k,p;
fin=fopen("tricouri.in","r");
fout=fopen("tricouri.out","w");
fscanf(fin,"%ld%d",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(fin,"%ld",&a[i]);
x=a[i];
v[x]=i;
u+=a[i];
for(j=1;j<=u;j++)
{
if((x!=j) && (v[j]!=0))
{
s=j+a[i];
if(!v[s])
v[s]=i;
else
if(a[i]>a[v[s]])
v[s]=i;
}
}
}
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d",&k,&p);
int ok=0;
for(j=u;j>=1;j--)
{
if(j%p==0){
s=j;
int ps=0;
while((ps<=k) && (s!=0))
{
s-=a[v[s]];
ps++;
}
if((ps==k) && (s==0))
{
fprintf(fout,"%d\n",j);
ok=1;
break;
}
}
}
if(!ok)
fprintf(fout,"-1\n");
}
fclose(fin);
fclose(fout);
return 0;
}