Cod sursa(job #2087594)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 13 decembrie 2017 21:07:36
Problema Caramizi Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("caramizi.in");
ofstream g("caramizi.out");
int n,m;
int v[200002];
long long s,max1[1000002],ct;
int main()
{
    f>>n>>m;
    for(int i=1;i<=n;++i)
        f>>v[i];
    sort(v+1,v+n+1);
    ct=0;
    for(int i=1;i<=v[n];++i)
    {
        max1[i]=max1[i-1];
        while(i>v[ct+1])
            ++ct,s+=v[ct];
        max1[i]=max(max1[i],1ll*(n-ct)*i+s-s%i);
    }
    while(ct+1<=n)
        s+=v[ct+1],++ct;
    for(long long i=v[n]+1;i<=1000000;++i)
        max1[i]=max(max1[i-1],s-s%i);
    for(int i=1;i<=m;++i)
    {
        int nr;
        f>>nr;
        if(nr<=1000000)
            g<<max1[nr]<<'\n';
        else
            g<<max1[1000000]<<'\n';
    }
    return 0;
}