155652025-02-20 13:14:31AblablablaA válaszadás nehézségeicpp17Wrong answer 0/1002ms544 KiB
#include "AdamEsEva.h"
#include <bits/stdc++.h>

typedef long long ll;

struct adat{
    ll l, r, ans;
};

ll szam = 0;
bool volt = 0;
ll kerdes[60];
bool valasz[60];

adat kerdez(ll l, ll r, ll ans, ll hatar){
    while(l <= r && szam < hatar){
        ll k = (l + r) / 2;

        bool a = ask(k);

        a ^= volt;

        kerdes[szam] = k;
        valasz[szam] = a;
        szam++;

        if(a){ // x <= s
            ans = k;
            l = k + 1;
        } else{
            r = k - 1;
        }
    }

    return {l, r, ans};
}

ll keres(ll l, ll r){
    ll vissza = 0;
    while(l <= r){
        ll k = (l + r) / 2;

        bool a = ask(k);

        if(valasz[k] != a){
            vissza = k;
            r = k - 1;
        } else{
            l = k + 1;
        }
    }

    return vissza;
}

adat lepes(ll kezdL, ll kezdR, ll kezdAns, ll hatar){
    auto [l, r, ans] = kerdez(kezdL, kezdR, kezdAns, hatar);

    if(!volt){
        bool a = ask(kerdes[0]);

        if(a != valasz[0]){
            l = kezdL, r = kezdR, ans = kezdAns;

            ll elso = keres(0, hatar - 1);
            for(ll i = 0; i < hatar; i++){
                if(elso < i){
                    valasz[i] ^= 1;
                }

                if(valasz[i]){
                    ans = kerdes[i];
                    l = kerdes[i] + 1;
                } else{
                    r = kerdes[i] - 1;
                }
            }
            volt = 1;
        }
    }

    return {l, r, ans};
}

void new_game() {

    // elejen: x <= s
    // utana: s < x
    ll kezdL = 1, kezdR = 1e18, kezdAns = 0;

    adat{kezdL, kezdR, kezdAns} = lepes(kezdL, kezdR, kezdAns, 32);
    adat{kezdL, kezdR, kezdAns} = lepes(kezdL, kezdR, kezdAns, 48);
    adat{kezdL, kezdR, kezdAns} = lepes(kezdL, kezdR, kezdAns, 56);
    adat{kezdL, kezdR, kezdAns} = lepes(kezdL, kezdR, kezdAns, 60);

    answer(kezdAns);
}
SubtaskSumTestVerdictTimeMemory
subtask10/100
1Wrong answer1ms324 KiB
2Wrong answer1ms316 KiB
3Wrong answer1ms508 KiB
4Wrong answer1ms316 KiB
5Wrong answer1ms316 KiB
6Wrong answer1ms500 KiB
7Wrong answer1ms316 KiB
8Wrong answer1ms316 KiB
9Wrong answer1ms316 KiB
10Wrong answer1ms316 KiB
11Wrong answer2ms544 KiB
12Wrong answer1ms396 KiB
13Wrong answer1ms320 KiB
14Wrong answer2ms316 KiB
15Wrong answer2ms532 KiB
16Wrong answer1ms316 KiB
17Wrong answer1ms508 KiB
18Wrong answer1ms316 KiB
19Wrong answer1ms496 KiB
20Wrong answer1ms508 KiB
21Wrong answer2ms316 KiB
22Wrong answer1ms316 KiB
23Wrong answer2ms316 KiB
24Wrong answer1ms500 KiB
25Wrong answer2ms500 KiB
26Wrong answer1ms508 KiB
27Wrong answer1ms316 KiB
28Wrong answer1ms316 KiB
29Wrong answer1ms316 KiB
30Wrong answer2ms316 KiB
31Wrong answer1ms316 KiB
32Wrong answer1ms316 KiB
33Wrong answer1ms512 KiB
34Wrong answer1ms316 KiB
35Wrong answer1ms316 KiB
36Wrong answer1ms316 KiB