Cod sursa(job #2410106)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 19 aprilie 2019 18:48:19
Problema Avioane Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <algorithm>
#define DIM 100010
using namespace std;

ifstream fin ("avioane.in");
ofstream fout ("avioane.out");
long long d[DIM],sol;
int poz[DIM],v[DIM];
int n,i;
void solve (int st, int dr, int l, int r){
    if (st > dr)
        return;
    int mid = (st+dr)/2;
    /// calculam d[mid];
    /// fixez clasa bussiness si caut economy
    int poz;
    for (int i=l;i<=r && i<=mid;i++){
        if (1LL*(mid-i)*v[i] + 1LL*(n-mid+1)*v[mid] > d[mid]){
            d[mid] = 1LL*(mid-i)*v[i] + 1LL*(n-mid+1)*v[mid];
            poz = i;
        }
    }

    solve (st,mid-1,l,poz);
    solve (mid+1,dr,poz,r);
}
int main (){

    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    sort (v+1,v+n+1);

    solve (1,n,1,n);

    sol = 0;
    for (i=1;i<=n;i++)
        sol = max (sol,d[i]);
    fout<<sol;

    return 0;
}