Cod sursa(job #768617)
Utilizator | Data | 17 iulie 2012 14:53:06 | |
---|---|---|---|
Problema | Avioane | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
#include <algorithm>
#define N 100000
using namespace std;
ifstream f("avioane.in");
ofstream g("avioane.out");
int n,i,A[N],j;
long long B[N],ANS,c;
int main ()
{
f >> n;
for (i=1;i<=n;i++)
f >> A[i];
sort(A+1,A+n+1);
for (i=n;i>=1;i--)
{
B[i]=A[i];
c=2*B[i];
for (j=i+1;j<=n && c>B[j];j++)
{
B[j]=c;
c+=A[i];
}
}
for (i=1;i<=n;i++)
ANS=max(ANS,B[i-1]+(n-i+1)*A[i]);
g << ANS << '\n';
f.close();g.close();
return 0;
}