Pagini recente » Cod sursa (job #3195514) | Cod sursa (job #1027814) | Cod sursa (job #2072431) | Cod sursa (job #1738993) | Cod sursa (job #253676)
Cod sursa(job #253676)
#include<stdio.h>
#include<vector>
#include<algorithm>
#define pb push_back
#define mkp make_pair
using namespace std;
const int maxn = 201000;
vector<pair<int,int> > VECT;
int N,M;
long long ANSF[maxn];
int main()
{
freopen("caramizi.in","r",stdin);
// freopen("caramizi.out","w",stdout);
scanf("%d %d\n",&N,&M);
for(int i = 1;i <= N; ++i)
{
int x = 0;
scanf("%d ",&x);
VECT.pb(mkp(x,-1));
}
int cordmax = 0;
for(int i = 1;i <= M; ++i)
{
int x = 0;
scanf("%d ",&x);
VECT.pb(mkp(x,i));
cordmax = max(x,cordmax);
}
for(int i = 1;i <= cordmax; ++i)
VECT.pb(mkp(i,0));
sort(VECT.begin(),VECT.end());
int last = 0;
long long anscur = 0,ans = 0;
int nrc = N;
for(unsigned int i = 0;i < VECT.size(); ++i)
{
int cur = VECT[i].first,poz = VECT[i].second;
if (poz == -1)
{
ans += (long long)(cur - last) * nrc;
anscur = max(anscur,ans - ans % cur);
nrc -= 1;
last = cur;
}
else
{
ans += (long long)(cur - last) * nrc;
anscur = max(anscur,ans - ans % cur);
last = cur;
ANSF[poz] = anscur;
}
}
for(int i = 1;i <= M; ++i)
printf("%lld\n",ANSF[i]);
return 0;
}