summaryrefslogtreecommitdiffstats
path: root/inf/liga/1.c
diff options
context:
space:
mode:
Diffstat (limited to 'inf/liga/1.c')
-rw-r--r--inf/liga/1.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/inf/liga/1.c b/inf/liga/1.c
new file mode 100644
index 0000000..955cd89
--- /dev/null
+++ b/inf/liga/1.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+#include <stdlib.h>
+#define M 512
+#define pedantic_fgets(a, b, c) if (!fgets(a, b, c)) { fprintf(stderr, "napaka pri vnosu\n"); return 1; }
+int main (void) {
+ char buf[M];
+ char * c;
+ int a, b, s;
+ pedantic_fgets(buf, M, stdin);
+ a = strtol(buf, &c, 10);
+ b = strtol(++c, NULL, 10);
+ if (a > b) {
+ s = a; /* swap */
+ a = b;
+ b = s;
+ }
+ fprintf(stderr, "interval: %05d %05d\n", a, b);
+ while (1) {
+ int v, u;
+ u = (a+b)/2; /* ugibamo to */
+ fprintf(stderr, "testiram %05d\n", u);
+ pedantic_fgets(buf, M, stdin);
+ if (!(v = strtol(buf, NULL, 10))) {
+ if ((b-a) <= 1)
+ goto ogabno;
+ fprintf(stdout, "%d %d\n", a, b);
+ return 0; /* da se CMS ne zmede */
+ }
+ if ((b-a) <= 1) { /* našli smo število */
+ogabno:
+ if (v)
+ fprintf(stdout, "PROTISLOVJE\n");
+ else
+ fprintf(stdout, "%d\n", u);
+ return 0;
+ }
+ if (v == -1) {
+ b = u;
+ b--;
+ fprintf(stderr, "-1: število je manjše od %05d, interval %05d %05d\n", u, a, b);
+ }
+ if (v == 1) {
+ a = u;
+ a++;
+ fprintf(stderr, " 1: število je večje od %05d, interval %05d %05d\n", u, a, b);
+ }
+ }
+ return 0;
+}