function  MBKS_zobraz_pocty_turnusov(n, m, z, a, XOPT)
% Funkcia, ktora sluzi na zostavenie grafu, ktory zobrazuje pocet
% pracovych turnusov o roznej dlzke prepocitane na dni, ktore sestra
% odpracuje a pocet dni volna, ktore sestra ma za sledovane obdobie.
%
% Volanie
%    MBKS_zostav_zobrazenie5(n, m, z, a, XOPT)
% Vstup:
%   n - pocet sestier
%   m - pocet dni planovaneho obdobia
%   z - pocet smien
%   a - max pocet po sebe iducich pracovnych dni
%   XOPT - riesenie v tvare viacrozmernej matice
% Výstup:
%   Graf poctu turnusov kazdej sestry
%   Graf poctu dni volna kazdej sestri medzi jednotlivymi turnusmi
%% ABOUT
% Zobrazenie poctu pracovnych turnusov o roznej dlzky pocitane na dni,
% ktore sestra za obdobie odpracuje sa vytvara pomocou funkcie bar.
% Turnusom sa myli pocet dni v kuse, po ktore ma sestra nejaku smenu.
% Akonahle ma volny den, zacina sa dalsi turnus. Zaujimaju nas dlzky tychto
% turnusov. Najskor sa vytvori matica OBSADENOST, ktora pre kazdu sestru i
% a kazdy den j obsahuje pocet smien, tj. OBSADENOST(i,j) je rovna sume
% XOPT(i,j,k) cez vsetky k. Z tejto matice sa pocita matica
% DLZKY_TURNUSOV, ktora ma rozmer n krat (a+1), kde a je maximalny pocet
% pracovnych dni v kuse. Tato sa pocita tak ze pre kazdu sestru i, sa
% postupne prechadzaju vsetky dni a ked je den obsadeny (tj.
% OBSADENOST(i,j)>0), tak sa zvacsi o 1 premenna dlzkaT. Tato premenna
% udava dlzku aktualneho turnusu. Pokial den nieje obsadeny a zaroven je
% dlzkaT>0, tak sa o 1 zvecsi citac v matici DLZKY_TURNUSOV a to v riadku i
% a v stlpci min([dlzkaT,a+1]) a premenna dlzkaT sa vrati na 0. Matica
% DLZKY_TURNUSOV sa vykresluje pomocou funkcie bar. Analogicky sa vykresluju 
% aj dlzky volnych dni.

%% Deklaracia a populacia matice obsadenosti sestier, dlzky pracovnych turnusov a dlzky volna
OBSADENOST = zeros(n,m);
DLZKY_TURNUSOV = zeros(n,a+1);
DLZKY_VOLNA = zeros(n,a+1);
dlzkaT = 0;
dlzkaV = 0;

for i = 1:n
    for j = 1:m
        for k = 1:z
            OBSADENOST(i,j) = sum(XOPT(i,j,:)); % Naplnenie matice 
        end
    end
end

for i = 1:n
    for j = 1:m
        if OBSADENOST(i,j) > 0
            dlzkaT = dlzkaT + 1; % Pocitanie dlzky turnusu
        elseif OBSADENOST(i,j) == 0 & dlzkaT > 0
			DLZKY_TURNUSOV(i, min(dlzkaT, a + 1)) = DLZKY_TURNUSOV(i, min(dlzkaT, a + 1)) + 1 ; % Naplnenie matice
            dlzkaT = 0; % vynulovanie pocitadla
        
        end
    end
    if dlzkaT > 0 % osetrenie posledneho dna v tyzni
        DLZKY_TURNUSOV(i,min(dlzkaT,a + 1)) = DLZKY_TURNUSOV(i,min(dlzkaT, a + 1)) + 1 ; % Naplnenie matice
        dlzkaT = 0; % Vynulovanie pocitadla
    
    end
end

for i = 1:n
    for j = 1:m
        if OBSADENOST(i,j) == 0
            dlzkaV = dlzkaV + 1;  % Pocitanie dlzky volna
        elseif OBSADENOST(i,j) > 0 & dlzkaV > 0
			DLZKY_VOLNA(i,min(dlzkaV,a + 1)) = DLZKY_VOLNA(i,min(dlzkaV, a + 1)) + 1; % Naplnenie matice
            dlzkaV = 0; % Vynulovanie pocitadla
        end
    end
    if  dlzkaV > 0 % osetrenie posledneho dna v tyzni
		DLZKY_VOLNA(i,min(dlzkaV,a + 1)) = DLZKY_VOLNA(i,min(dlzkaV, a + 1)) + 1; % Naplnenie matice
        dlzkaV = 0; % Vynulovanie pocitadla
    end
end

%% Vykreslenie poctu pracovnych turnusov
subplot(211);
bar(DLZKY_TURNUSOV,'stacked')
hold off;
grid off;
title(['Počty turnusov rôznych dĺžok pre jednotlivé sestry'],'FontSize',16);
legend({'Počty turnusov o dĺžke 1','Počty turnusov o dĺžke 2','Počty turnusov o dĺžke 3','Počty turnusov o dĺžke 4','Počty turnusov o dĺžke väčšej než a=4'},'Location','northeastoutside');
xlabel('Sestra','fontsize',12);
ylabel('Počty turnusov v danom počte dní','fontsize',12);

%% Vykreslenie poctu volna
subplot(212);
bar(DLZKY_VOLNA,'stacked')
hold off;
grid off;
title(['Počet voľných prestávok rôznych dĺžok pre jednotlivé sestry'],'FontSize',16);
legend({'Počet voľna o dĺžke 1','Počet voľna o dĺžke 2','Počet voľna o dĺžke 3','Počet voľna o dĺžke 4','Počet voľna o dĺžke väčšej než 4'},'Location','northeastoutside');
xlabel('Sestra','fontsize',12);
ylabel('Počty voľna o danom počte dní','fontsize',12);

end