Pagini recente » Cod sursa (job #1238019) | Cod sursa (job #1386271) | Cod sursa (job #2634294) | Cod sursa (job #1880413) | Cod sursa (job #848192)
Cod sursa(job #848192)
#include <fstream>
#include <algorithm>
#define max 100005
using namespace std;
long n=0,v[max],pro[max],c=0,d=0,PT;
void Read();
void Print();
void Solve();
void Construct();
void GetPrices();
void Profit();
bool Comp(long a,long b);
int main()
{Read();
Solve();
Print();
return 0;
}
bool Comp(long a,long b)
{
return (a<b);
}
void Read()
{
ifstream f("avioane.in");
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
f.close();
}
void Print()
{
ofstream g("avioane.out");
g<<PT;
g.close();
}
void Solve()
{
sort(&v[1],&v[n+1],Comp);
Construct();
GetPrices();
Profit();
}
void Construct()
{
for(int i=1;i<=n;i++)
pro[i]=v[i]*(n-i+1);
}
void GetPrices()
{int a,b;
for(int nn=n;nn>=2;nn>>=1)
{
for(int i=1;i<=n;i++)
{
for(;pro[i]==-1;i++);
a=i;
i++;
for(;pro[i]==-1;i++);
b=i;
if(pro[a]>pro[b])
pro[b]=-1;
else
pro[a]=-1;
}
}
}
void Profit()
{
int q=0;
for(int i=n;i>=1;i--)
{
if(pro[i]!=-1)
{
PT+=v[i]*(n-q-i+1);
q=n-i+1;
}
}
}