function [nearestIdx, centroids] = myKMeans(data, k)
%KMeans algoritmus.
%
% data - data/instance, ktera se maji shlukovat. (Matice N x M - radky
% jednotlive instance, sloupce dimenze)
% k - pocet reprezentantu (shluku/centroidu)
%
% nearestIdx - vysledne prirazeni vektoru k jednotlivym centroidum (Matice N x 1 z {1,..., K})
% centroids - vysledni representanti shluku (Matice K x M)

N = size(data,1);
centroids = % zde inicializujte reprezentanty
stopping = false;
while(~stopping)

    %Vypocet reprezentantu, tj. nejblizsich centroidu
    nearestIdx = zeros(N, 1);

    nearestIdx = nearestCentroid(data(i,:), centroids);
 
    % Update centroidu
    %...
    %Tuto cast mate doplnit

    %Rozhodnuti zda pokracovat
    %...
    %Tuto cast mate doplnit
    stopping = true;
end


end


function nearestCentrIdx = nearestCentroid(data, centroids)
% Prirazeni jednotlivych instanci k jejich reprezentantum (centroidum)
%
% data - (Matice N x M - radky jednotlive instance, sloupce dimenze)
% centroids - representanti shluku (Matice K x M)

% nearestCentrIdx - Matice N x 1 z {1,..., K}, tj. prirazeni jednotlivych 
% instanci k jejich reprezentantum (centroidum)

% ...
% Tuto cast mate doplnit, tj.:
% 1) vypocet eukleidovske vzdalenosti mezi jednou instanci a vsemi
% reprezentatny
% 2) prirazeni jednotlivych instanci k jejich reprezentantum 

end

