Pagini recente » Cod sursa (job #1073838) | Cod sursa (job #2170829) | Cod sursa (job #35513) | Cod sursa (job #3121318) | Cod sursa (job #587679)
Cod sursa(job #587679)
# include <algorithm>
# include <cstdio>
const char *FIN = "avioane.in", *FOU = "avioane.out" ;
const int MAX = 100005 ;
long long sol, V[MAX] ;
int S[MAX], P[MAX] ;
int N ;
void solve ( int st, int dr ) {
int mij = st + dr >> 1 ;
if ( st > dr ) return ;
V[mij] = -1 ;
for ( int i = P[st - 1]; i <= P[dr + 1]; ++i ) {
if ( (mij - i + 1) * 1LL * S[i] > V[mij] ) {
V[mij] = (mij - i + 1) * 1LL * S[i], P[mij] = i ;
}
}
solve ( st, mij - 1 ), solve ( mij + 1, dr ) ;
}
int main (void) {
freopen (FIN, "r", stdin);
scanf ("%d", &N) ;
for ( int i = 1; i <= N; ++i ) {
scanf ("%d", S + i) ;
}
std :: sort (S + 1, S + N + 1);
P[N + 1] = N, solve ( 1, N ) ;
for ( int i = 2; i <= N; ++i ) {
if ( (N - i + 1) * 1LL * S[i] + V[i - 1] > sol ) {
sol = (N - i + 1) * 1LL * S[i] + V[i - 1] ;
}
}
fprintf (fopen (FOU, "w"), "%lld", sol) ;
}