Cod sursa(job #1527442)
Utilizator | Data | 18 noiembrie 2015 05:07:32 | |
---|---|---|---|
Problema | Statistici de ordine | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.19 kb |
#include <fstream>
#include <algorithm>
using namespace std;
int j,n,x,i;
short v[20000010];
long long s;
int main()
{
ifstream f("k1.in");
ofstream g("k1.out");
f>>n;
for(i=1;i<=n;i++)
f>>x,v[x]++;
for(i=1;i<=20000000;i++)
{
if(v[i])
{
v[i*2]+=v[i]/2;
s+=i*v[i];
if(v[i]%2)
{
s-=i*v[i];
v[i]=1;
for(j=i+1;j<=20000000;j++)
{
if(v[j])
{
if(v[i]<=v[j])
{
s+=v[i]*(i+j);
v[i+j]+=v[i];
v[j]-=v[i];
i=j;
break;
}
else
{
s+=v[j]*(i+j);
v[i+j]+=v[j];
v[j]=0;
v[i]-=v[j];
}
}
}
}
}
}
g<<s<<'\n';
return 0;
}