Pagini recente » Cod sursa (job #549549) | Cod sursa (job #1723808) | Cod sursa (job #1113660) | Cod sursa (job #1711546) | Cod sursa (job #253755)
Cod sursa(job #253755)
#include<stdio.h>
#include<stdlib.h>
int n,m,c[200000],t[20000000],cc[200000];
void read()
{
freopen("caramizi.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
{
scanf("%d",&c[i]);
cc[i]=c[i];
}
for(int j=1;j<=m;++j)
scanf("%d",&t[j]);
}
int compar(const void *q,const void *p)
{
int x=*(int*)q,y=*(int*)p;
if(x>y)
return 1;
else return -1;
return 0;
}
int solve()
{
int caramizi=n-1,cara=0,cj=0,ccara=0,min=0,j,i,p;
freopen("caramizi.out","w",stdout);
for(i=1;i<=n;++i)
if(t[i]<=c[1])
printf("%d\n",t[i]*n);
else
{
for(;caramizi>1;--caramizi)
{
qsort(c+1,n,sizeof(c[0]),compar);
for(j=n-caramizi;j<=caramizi;++j)
{
if(cara+c[n-caramizi]<=t[i])
{
cara+=c[n-caramizi];
c[j]-=c[n-caramizi];
for(int w=n-caramizi;w<=n;++w)
c[w]=c[w+1];
}
else
j=n-caramizi-1;
}
if(cara>ccara)
ccara=cara;
cara=0;
}
printf("%d\n",ccara);
for(p=1;p<=n;++p)
c[p]=cc[p];
}
}
int main()
{
read();
solve();
return 0;
}