Cod sursa(job #2334936)

Utilizator sichetpaulSichet Paul sichetpaul Data 3 februarie 2019 13:18:24
Problema Avioane Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <algorithm>
#define DIM 100001
using namespace std;
int v[DIM],st[DIM],dr[DIM];
int main()
{   int n,i,pos,sol=0,p,Max;
    ifstream f("avioane.in");
    ofstream g("avioane.out");
    f>>n;
    for (i=1;i<=n;++i)
        f>>v[i];
    sort(v+1,v+n+1);

    st[1]=1;
    for (i=2;i<=n;++i) {
        pos=st[i-1];
        p=pos,Max=v[p]*(i-p+1);
        while (pos<i) {
            ++pos;
            if (v[pos]*(i-pos+1)>Max) Max=v[pos]*(i-pos+1),p=pos;
           }
        st[i]=p;
    }

    dr[n]=v[n];
    for (i=n-1;i>=1;--i)
        dr[i]=max(dr[i+1],v[i]*(n-i+1));

    for (i=1;i<n;++i)
        sol=max(sol,v[st[i]]*(i-st[i]+1)+dr[i+1]);

    g<<sol;
    return 0;
}