Pagini recente » Cod sursa (job #643651) | Cod sursa (job #1869273) | Cod sursa (job #2891000) | Cod sursa (job #939548) | Cod sursa (job #1995508)
#include <cstdio>
#include <queue>
using namespace std;
int n;
int nrDeScazut;
queue<int> q1;
queue<int> q2;
void citire()
{
scanf("%d", &n);
int tmp;
for(int i = 0; i < n; i++)
{
scanf("%d", &tmp);
q1.push(tmp);
nrDeScazut += tmp;
}
}
int gasireMinim()
{
int tmp1, tmp2;
if(q1.empty() == true)
{
tmp1 = q2.front();
q2.pop();
return tmp1;
}
if(q2.empty() == true)
{
tmp1 = q1.front();
q1.pop();
return tmp1;
}
tmp1 = q1.front();
tmp2 = q2.front();
if(tmp1 <= tmp2)
{
q1.pop();
return tmp1;
}
else
{
q2.pop();
return tmp2;
}
}
void solve()
{
int nr1, nr2;
int solutie = 0;
while(q1.empty() == false || q2.empty() == false)
{
nr1 = gasireMinim();
nr2 = gasireMinim();
solutie += (nr1 + nr2);
q2.push(nr1 + nr2);
}
printf("%d", solutie - nrDeScazut);
}
int main()
{
freopen("huffman.in", "r", stdin);
freopen("huffman.out", "w", stdout);
citire();
solve();
return 0;
}