diff options
Diffstat (limited to 'inf/rtk/2021-državno/2')
-rwxr-xr-x | inf/rtk/2021-državno/2/a.out | bin | 0 -> 19912 bytes | |||
-rw-r--r-- | inf/rtk/2021-državno/2/marsovci.txt | 5 | ||||
-rw-r--r-- | inf/rtk/2021-državno/2/marsovci2.txt | 5 | ||||
-rw-r--r-- | inf/rtk/2021-državno/2/prog.c | 35 |
4 files changed, 45 insertions, 0 deletions
diff --git a/inf/rtk/2021-državno/2/a.out b/inf/rtk/2021-državno/2/a.out Binary files differnew file mode 100755 index 0000000..8599af2 --- /dev/null +++ b/inf/rtk/2021-državno/2/a.out diff --git a/inf/rtk/2021-državno/2/marsovci.txt b/inf/rtk/2021-državno/2/marsovci.txt new file mode 100644 index 0000000..d271b05 --- /dev/null +++ b/inf/rtk/2021-državno/2/marsovci.txt @@ -0,0 +1,5 @@ +4 +75 12 96 57 28 +96 28 12 75 9 +96 9 57 28 75 +12 57 9 28 75 diff --git a/inf/rtk/2021-državno/2/marsovci2.txt b/inf/rtk/2021-državno/2/marsovci2.txt new file mode 100644 index 0000000..8bd6ec0 --- /dev/null +++ b/inf/rtk/2021-državno/2/marsovci2.txt @@ -0,0 +1,5 @@ +4 +75 12 96 57 28 +96 28 12 75 9 +96 9 57 28 75 +12 57 96 28 75 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 */ +} |