Pagini recente » Cod sursa (job #312449) | Cod sursa (job #792094) | Cod sursa (job #2358580) | Cod sursa (job #1240561) | Cod sursa (job #417031)
Cod sursa(job #417031)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define file_in "caramizi.in"
#define file_out "caramizi.out"
#define Nmax 201010
int n,m,sum,last,cur,poz,inm,i,x,maxx;
vector< pair<int,int> > v;
long long sol[Nmax],ans;
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &n, &m);
maxx=0;
for (i=1;i<=n;++i)
{
scanf("%d", &x);
v.push_back(make_pair(x,-1));
}
for (i=1;i<=m;++i)
{
scanf("%d", &x);
maxx=max(maxx,x);
v.push_back(make_pair(x,i));
}
for(i=1;i<=maxx;++i) v.push_back(make_pair(i,0));
sort(v.begin(),v.end());
last=0;
inm=n;
ans=0;
for (i=0;i<v.size();++i)
{
poz=v[i].second;
cur=v[i].first;
if (poz==-1)
{
sum+=(cur-last)*inm;
last=cur;
inm--;
ans=max(ans,sum-sum%cur);
}
else
{
sum+=(cur-last)*inm;
last=cur;
ans=max(ans,sum-sum%cur);
sol[poz]=ans;
}
}
for (i=1;i<=m;++i)
printf("%lld\n", sol[i]);
fclose(stdin);
fclose(stdout);
return 0;
}