Cod sursa(job #1427659)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 2 mai 2015 19:19:29
Problema Caramizi Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <algorithm>

#define NMAX 200007
#define INF 1000007

using namespace std;

long long n, m, c, Ans, v[NMAX], Dp[INF];

int main(){
    freopen("caramizi.in", "r", stdin);
    freopen("caramizi.out", "w", stdout);
    scanf("%lld %lld", &n, &m);
    Ans = -1;
    for(int i = 1; i <= n; ++i)
        scanf("%lld", &v[i]);
    v[0] = 1;
    v[n + 1] = INF;
    sort(v + 1, v + n + 1);
    for(int i = 0; i <= n; ++i){
        Ans += v[i];
        for(int j = v[i]; j < v[i + 1]; ++j){
            Dp[j] = max(1LL * Dp[j - 1], 1LL * Ans / j * j + 1LL * (n - i) * j);
        }
    }
    for(int i = 1; i <= m; ++i){
        scanf("%lld", &c);
        if (c < INF)
            printf("%lld\n", Dp[c]);
        else
            printf("%lld\n", Ans);
    }
    return 0;
}