155652025-02-20 13:14:31AblablablaA válaszadás nehézségeicpp17Hibás válasz 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);
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/100
1Hibás válasz1ms324 KiB
2Hibás válasz1ms316 KiB
3Hibás válasz1ms508 KiB
4Hibás válasz1ms316 KiB
5Hibás válasz1ms316 KiB
6Hibás válasz1ms500 KiB
7Hibás válasz1ms316 KiB
8Hibás válasz1ms316 KiB
9Hibás válasz1ms316 KiB
10Hibás válasz1ms316 KiB
11Hibás válasz2ms544 KiB
12Hibás válasz1ms396 KiB
13Hibás válasz1ms320 KiB
14Hibás válasz2ms316 KiB
15Hibás válasz2ms532 KiB
16Hibás válasz1ms316 KiB
17Hibás válasz1ms508 KiB
18Hibás válasz1ms316 KiB
19Hibás válasz1ms496 KiB
20Hibás válasz1ms508 KiB
21Hibás válasz2ms316 KiB
22Hibás válasz1ms316 KiB
23Hibás válasz2ms316 KiB
24Hibás válasz1ms500 KiB
25Hibás válasz2ms500 KiB
26Hibás válasz1ms508 KiB
27Hibás válasz1ms316 KiB
28Hibás válasz1ms316 KiB
29Hibás válasz1ms316 KiB
30Hibás válasz2ms316 KiB
31Hibás válasz1ms316 KiB
32Hibás válasz1ms316 KiB
33Hibás válasz1ms512 KiB
34Hibás válasz1ms316 KiB
35Hibás válasz1ms316 KiB
36Hibás válasz1ms316 KiB