Cod sursa(job #2013833)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 22 august 2017 15:01:00
Problema Caramizi Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

const int MAXC = (int) 1e6;

int fr[MAXC + 1];
long long sol[MAXC + 1];

int main() {
    FILE *fi, *fout;
    int i, n, m, l, c;
    fi = fopen("caramizi.in" ,"r");
    fout = fopen("caramizi.out" ,"w");
    fscanf(fi,"%d %d " ,&n,&m);
    for(i = 1; i <= n; i++) {
        fscanf(fi,"%d " ,&c);
        fr[c]++;
    }
    long long s = 0;
    int p = 0;
    for(i = 1; i <= MAXC; i++) {
        p += fr[i];
        s += 1LL * i * fr[i];
        sol[i] = std::max(sol[i - 1], 1LL * (s / i) * i + 1LL * (n - p) * i);
    }
    for(i = 1; i <= m; i++) {
        fscanf(fi,"%d " ,&l);
        if(s <= l)
            fprintf(fout,"%lld\n" ,s);
        else {
            l = std::min(l, MAXC);
            fprintf(fout,"%lld\n" ,sol[l]);
        }
    }
    fclose(fi);
    fclose(fout);
    return 0;
}