Cod sursa(job #1427658)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 2 mai 2015 19:18:17
Problema Caramizi Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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("%d %d", &n, &m);
    Ans = -1;
    for(int i = 1; i <= n; ++i)
        scanf("%d", &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(Dp[j - 1], Ans / j * j + (n - i) * j);
        }
    }
    for(int i = 1; i <= m; ++i){
        scanf("%d", &c);
        if (c < INF)
            printf("%lld\n", Dp[c]);
        else
            printf("%lld\n", Ans);
    }
    return 0;
}