Pagini recente » Cod sursa (job #2834235) | Cod sursa (job #337281) | Cod sursa (job #1110247) | Cod sursa (job #2799333) | Cod sursa (job #1194282)
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX_N 100100
using namespace std;
long long v[MAX_N];
int d[MAX_N];
int st,dr;
long long val(int i,int j) {
if(v[i]==v[j]) {
return MAX_N;
}
return (v[j]*j-v[i]*i)/(v[j]-v[i]) + 1;
}
int main() {
int n;
ifstream f("/Users/alexpetrache/Documents/Programare/Xcode/avioane/avioane/avioane.in");
ofstream g("/Users/alexpetrache/Documents/Programare/Xcode/avioane/avioane/avioane.out");
f>>n;
for(int i=1;i<=n;i++) {
f>>v[i];
}
sort(v+1,v+n+1);
long long r=v[1]*n;
d[++dr]=1;
st=1;
for(int i=2;i<=n;i++) {
while(st<dr && val(d[st],d[st+1])<=i)
st++;
r=max(r,(n-i+1)*v[i]+(i-d[st])*v[d[st]]);
if(v[i]==v[d[dr]])
continue;
while(st<dr && val(d[dr-1],i)>val(d[dr],i))
dr--;
d[++dr]=i;
}
g<<r;
return 0;
}