Pagini recente » Cod sursa (job #294515) | Cod sursa (job #2277157) | Cod sursa (job #1745673) | Cod sursa (job #1864745) | Cod sursa (job #585887)
Cod sursa(job #585887)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define MAX 100001
FILE *f , *g ;
long n , v[MAX] , k;
long long best1 , best2 , r1 , r2 , t;
void citire();
void sortare();
void solve();
void tipar();
int main()
{
citire();
sortare();
solve();
tipar();
return 0;
}
void citire()
{
f=fopen("avioane.in" , "r" );
fscanf(f , "%ld" , &n );
for ( long i = 1 ; i<= n ; ++i )
fscanf(f , "%ld" , &v[i] );
fclose(f);
}
void sortare()
{
sort(v+1 , v+n+1 );
}
void solve()
{
long i = 1;
while( i <= n)
{
k = i ;
while(v[k] == v[k+1])
k++;
t = v[i] * (k-i+1);
if(best2 + r2*(k-i+1) + r1 >= v[i]*(k-i+1) + best2 ||( k >i && t < best2 ))
best2+=r2*(k-i+1);
else
{
best1 = best2;
r1 = r2;
best2 = t;
r2 = v[i];
}
if(k > i)
i = k+1;
else
++i;
}
}
void tipar()
{
g=fopen("avioane.out" , "w" );
fprintf(g , "%lld" , best1+best2 );
fclose(g);
}