summaryrefslogtreecommitdiffstats
path: root/inf/rtk/2021-državno/2/prog.c
blob: e8bc8a9c7db683ec331ead7cd399ede05c1051f2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
#include <limits.h> /* INT_MAX */
int main (int argc, char ** argv) {
	char buf[100]; /* vhodni niz ne more biti večji od 100, razen, če je marsovcev več kot 1e100, v tem primeru mamo večje problme */
	int * opr = calloc(101, sizeof(int)); /* alociramo in na 0 nastavimo seznam celih, to so vsa obstoječa opravila */
	fgets(buf, 99, stdin); /* preberemo število marsovcev kot niz */
	int mar = atoi(buf); /* ga pretvorimo v celo */
	for (int i = 0; i < mar; i++) { /* za vsakega marsovca. tukaj dokaj verjamemo, da mar ne laže, ker bi to bil velik fuckery */
		fgets(buf, 99, stdin); /* preberemo marsovca */
		char * cp = buf; /* nastavimo kazalec na začetek buf, brali bomo števila */
		do {
			int stevopr = strtol(cp, &cp, 10); /* povečamo št. opravila */
			if (stevopr != 0) /* če številka opravila ni nič (strtol v primeru napake vrne nič, če so recimo presledki na koncu vrs) */
				opr[stevopr]++; /* povečamo število marsovcev s kompetenco za to opravilo */
			cp++; /* preskočimo presledek */
		} while (cp[-1] != '\0' && cp[-1] != '\n' && cp[-1] != '\r'); /* nehamo, če zadenemo ob konec niza ali LF (CR na shitty OS) */
	}
	int min = INT_MAX; /* semle shranimo število marsovcev s kompetencami opravljanja opravila z najmanjšo zastopanostjo */
	int max = -1; /* semle shranimo število marsovcev s kompetencami opravila z največjo zastopanostjo */
	for(int e = 1; e <= 100; e++) { /* za vsako možno opravilo */
		if (opr[e] != 0) { /* če kdo sploh ima kompetence */
			if (opr[e] < min) /* če je trenutno opravilo manj zastopano */
				min = opr[e]; /* to zapišemo */
			if (opr[e] > max) /* če je trenutno opravilo bolj zastopano */
				max = opr[e]; /* to zapišemo */
		}
	}
	if (max-min > 1) /* če je diskrepanca med najbolj zastopanim in najmanj zastopanim opravilom večja od ena */
		fprintf(stdout, "ne\n"); /* rečemo ne */
	else /* drugače */
		fprintf(stdout, "da\n"); /* rečemo ja */
	free(opr); /* sprostimo seznam kompetenc */
	return 0; /* odidemo iz programa */
}