Cod sursa(job #2412132)

Utilizator robx12lnLinca Robert robx12ln Data 21 aprilie 2019 18:03:51
Problema Avioane Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;

ifstream fin("avioane.in");
ofstream fout("avioane.out");

const int DIM = 1e5 + 5;

int N, arr[DIM];
long long ans = numeric_limits<long long>::min();

void solve( int st, int dr, int L, int R ){

    if( st > dr )
        return;

    int p = -1;
    long long mx = numeric_limits<long long>::min();
    int mid = ( st + dr ) >> 1;
    for( int i = L; i <= mid && i <= R; i++ )
        if( mx < 1LL * (mid - i) * arr[i] + 1LL * (N - mid + 1) * arr[mid] )
            mx = 1LL * (mid - i) * arr[i] + 1LL * (N - mid + 1) * arr[mid], p = i;
    ans = max( ans, mx );
    solve( st, mid - 1, L, p );
    solve( mid + 1, dr, p, R );
}

int main(){

    fin >> N;
    for( int i = 1; i <= N; i++ )
        fin >> arr[i];
    sort( arr + 1, arr + N + 1 );

    solve( 1, N, 1, N );
    fout << ans << "\n";
    return 0;
}