Submission #497706

#TimeUsernameProblemLanguageResultExecution timeMemory
497706LittleCubeWorm Worries (BOI18_worm)C++14
10 / 100
1 ms328 KiB
#include <stdio.h>
#include <stdlib.h>

int arr[1000005];

int query(int x, int y, int z)
{
    if (arr[x] == 0)
    {
        printf("? %d %d %d\n", x, y, z);
        fflush(stdout);
        int ans = -1;
        (void)scanf("%d", &ans);
        if (ans == -1)
            exit(0);
        arr[x] = ans;
    }
    return arr[x];
}

__attribute__((noreturn)) void guess(int x, int y, int z)
{
    printf("! %d %d %d\n", x, y, z);
    exit(0);
}

int main()
{
    int N, M, K, Q;
    (void)scanf("%d %d %d %d", &N, &M, &K, &Q);
    if (M == 1 && K == 1)
    {
        int L = 1, R = N;
        while (L < R && Q--)
        {
            int mid = (L + R) / 2;
            int lans = query(mid, 1, 1), rans = query(mid + 1, 1, 1);
            if (lans <= rans)
                L = mid + 1;
            else
                R = mid;
        }
        guess((L + R) / 2, 1, 1);
    }
}
// 1 4 6 3 7 | 2 9 8 5 19 | 4 3

Compilation message (stderr)

worm.cpp: In function 'int query(int, int, int)':
worm.cpp:13:20: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |         (void)scanf("%d", &ans);
      |               ~~~~~^~~~~~~~~~~~
worm.cpp: In function 'int main()':
worm.cpp:30:16: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     (void)scanf("%d %d %d %d", &N, &M, &K, &Q);
      |           ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...