summaryrefslogtreecommitdiffstats
path: root/inf/rtk/2021-državno/2/prog.c
diff options
context:
space:
mode:
authorsijanec <anton@sijanec.eu>2021-03-27 15:56:37 +0100
committersijanec <anton@sijanec.eu>2021-03-27 15:56:37 +0100
commit72c9a4a474afe5d7789466ce61bb50ca6220ec67 (patch)
tree8d6004ace45f9928773811881585b6a3a4a1e473 /inf/rtk/2021-državno/2/prog.c
parentnarejena slovenščain pretzenacija do kponca (diff)
downloadsola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.tar
sola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.tar.gz
sola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.tar.bz2
sola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.tar.lz
sola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.tar.xz
sola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.tar.zst
sola-gimb-2-72c9a4a474afe5d7789466ce61bb50ca6220ec67.zip
Diffstat (limited to '')
-rw-r--r--inf/rtk/2021-državno/2/prog.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/inf/rtk/2021-državno/2/prog.c b/inf/rtk/2021-državno/2/prog.c
new file mode 100644
index 0000000..e8bc8a9
--- /dev/null
+++ b/inf/rtk/2021-državno/2/prog.c
@@ -0,0 +1,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 */
+}