Kodowanie Efektywnych Algorytmów - Ćwiczenia 6


Poprzednie Następne
Temat: Zadania rozgrzewkowe, ale nieco trudniejsze, c.d.

Lista zadań (wszystkie na sprawdzarce acm.edu.pl):
029 - Obrazy i pokoje
030 - Wybieranie reprezentantów
031 - Odwracanie kartek
032 - Kto zje więcej pizzy?
033 - Kalibracja lasera
034 - Wieża z wiader
017 - Układanie kart


Obiecany kluczowy kawałek pseudokodu dla zadania "wybieranie reprezentantów":
  for(i=0;i<2*n-2;i++) {
		int value = person[k];
		int oppvalue = 3- value;

		person[k]=0;
		prevalive[nextalive[k]] = prevalive[k];
		nextalive[prevalive[k]] = nextalive[k];

		int oppindex=next[k];

		while (person[oppindex] != oppvalue)
			if (!person[oppindex]) oppindex = nextalive[oppindex];
				else oppindex = next[oppindex];

		if (person[nextalive[k]] == value)
			next[nextalive[k]] = nextalive[oppindex];

		k=oppindex;
	}