Cod sursa(job #1759722)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 19 septembrie 2016 19:03:59
Problema Coduri Huffman Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <queue>

using namespace std;


queue <int> qfr,qin;

int main(){
    int val,valtot=0;
    int n,m,i,x,t;

    freopen("scandura.in","r",stdin);
    freopen("scandura.out","w",stdout);

    scanf("%d%d",&n,&m);

    t=n;
    while( (t -1) %(m-1) ){

        t++;
        qfr.push(0);
    }

    for(i=0;i<n;i++){
        scanf("%d",&x);
        qfr.push(x);
    }

    while( !(qfr.size()==0 && qin.size()==1) ){
        val=0;
        for(i=0;i<m;i++){
            if(qin.empty() && qfr.empty()){
                break;
            }
            if(qin.empty()){
                val+=qfr.front();
                qfr.pop();
            }else if(qfr.empty()){
                val+=qin.front();
                qin.pop();
            }else{
                if(qin.front()<qfr.front()){
                    val+=qin.front();
                    qin.pop();
                }else{
                    val+=qfr.front();
                    qfr.pop();
                }
            }
        }
        valtot+=val;
        qin.push(val);
    }

    printf("%d",valtot);

    return 0;
}