QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#104895 | #6394. Turn on the Light | ckiseki# | AC ✓ | 8ms | 3844kb | C++20 | 1.6kb | 2023-05-12 12:41:21 | 2023-05-12 12:41:25 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#ifdef CKISEKI
#define safe cerr << __PRETTY_FUNCTION__ << " line " << __LINE__ << " safe\n"
#define debug(a...) debug_(#a, a)
#define orange(a...) orange_(#a, a)
template <typename ...T>
void debug_(const char *s, T ...a) {
cerr << "\e[1;32m(" << s << ") = (";
int cnt = sizeof...(T);
(..., (cerr << a << (--cnt ? ", " : ")\e[0m\n")));
}
template <typename I>
void orange_(const char *s, I L, I R) {
cerr << "\e[1;32m[ " << s << " ] = [ ";
for (int f = 0; L != R; ++L)
cerr << (f++ ? ", " : "") << *L;
cerr << " ]\e[0m\n";
}
#else
#define safe ((void)0)
#define debug(...) safe
#define orange(...) safe
#endif
constexpr int maxn = 1000000 + 5;
bool done[maxn];
int ask(int x) {
done[x] = true;
printf("? %d\n", x);
fflush(stdout);
int y;
scanf("%d", &y);
return y;
}
int main() {
int n;
scanf("%d", &n);
int p = 2;
int L_R = 1;
if (ask(1) == 0) {
printf("! 1\n");
return 0;
}
int L = 1, R = n + 1;
while (R - L > 1) {
int M = (L + R) >> 1;
int v = ask(M);
if (v == L_R - 1) {
if (L_R - 1 == 0) {
while (done[p]) ++p;
if (ask(p) == L_R - 1) {
printf("! %d\n", p);
break;
}
L = max(L, p);
} else {
L_R--;
}
R = M;
} else if (v == L_R) {
printf("! %d\n", M);
break;
} else if (v == L_R + 1) {
++L_R;
L = M;
} else assert(false);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3608kb
input:
3 1 2 2
output:
? 1 ? 2 ? 3 ! 3
result:
ok Correct position at 3
Test #2:
score: 0
Accepted
time: 2ms
memory: 3736kb
input:
10 1 0 1 0 0
output:
? 1 ? 6 ? 2 ? 4 ? 3 ! 3
result:
ok Correct position at 3
Test #3:
score: 0
Accepted
time: 1ms
memory: 3580kb
input:
9 1 2 3 3
output:
? 1 ? 5 ? 7 ? 8 ! 8
result:
ok Correct position at 8
Test #4:
score: 0
Accepted
time: 1ms
memory: 3516kb
input:
8 1 0 1 1
output:
? 1 ? 5 ? 2 ? 3 ! 3
result:
ok Correct position at 3
Test #5:
score: 0
Accepted
time: 2ms
memory: 3580kb
input:
7 1 2 3 3
output:
? 1 ? 4 ? 6 ? 7 ! 7
result:
ok Correct position at 7
Test #6:
score: 0
Accepted
time: 1ms
memory: 3572kb
input:
6 1 0 1 1
output:
? 1 ? 4 ? 2 ? 3 ! 3
result:
ok Correct position at 3
Test #7:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
5 1 2 3 3
output:
? 1 ? 3 ? 4 ? 5 ! 5
result:
ok Correct position at 5
Test #8:
score: 0
Accepted
time: 1ms
memory: 3588kb
input:
4 1 1
output:
? 1 ? 3 ! 3
result:
ok Correct position at 3
Test #9:
score: 0
Accepted
time: 0ms
memory: 3800kb
input:
3 1 1
output:
? 1 ? 2 ! 2
result:
ok Correct position at 2
Test #10:
score: 0
Accepted
time: 2ms
memory: 3584kb
input:
2 1 1
output:
? 1 ? 2 ! 2
result:
ok Correct position at 2
Test #11:
score: 0
Accepted
time: 1ms
memory: 3812kb
input:
1 0
output:
? 1 ! 1
result:
ok Correct position at 1
Test #12:
score: 0
Accepted
time: 1ms
memory: 3636kb
input:
1000000 1 0 1 2 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 10 9 10 10
output:
? 1 ? 500001 ? 2 ? 250001 ? 375001 ? 437501 ? 406251 ? 390626 ? 3 ? 382813 ? 386719 ? 388672 ? 389649 ? 390137 ? 390381 ? 390503 ? 390564 ? 390595 ? 390610 ? 390618 ? 390614 ? 390612 ? 390613 ! 390613
result:
ok Correct position at 390613
Test #13:
score: 0
Accepted
time: 3ms
memory: 3608kb
input:
999999 1 2 3 2 3 2 1 2 3 4 3 4 5 6 7 8 9 10 11 12 12
output:
? 1 ? 500000 ? 750000 ? 875000 ? 812500 ? 843750 ? 828125 ? 820312 ? 824218 ? 826171 ? 827148 ? 826659 ? 826903 ? 827025 ? 827086 ? 827117 ? 827132 ? 827140 ? 827144 ? 827146 ? 827147 ! 827147
result:
ok Correct position at 827147
Test #14:
score: 0
Accepted
time: 2ms
memory: 3672kb
input:
999998 1 0 1 0 1 0 1 0 1 2 3 4 5 6 5 6 7 8 9 8 9 8 9 8 8
output:
? 1 ? 500000 ? 2 ? 250001 ? 3 ? 125002 ? 4 ? 62503 ? 5 ? 31254 ? 46878 ? 54690 ? 58596 ? 60549 ? 61526 ? 61037 ? 61281 ? 61403 ? 61464 ? 61495 ? 61479 ? 61487 ? 61483 ? 61485 ? 61484 ! 61484
result:
ok Correct position at 61484
Test #15:
score: 0
Accepted
time: 4ms
memory: 3772kb
input:
999997 1 2 3 2 3 2 1 2 3 4 3 4 5 6 7 8 9 10 11 12 12
output:
? 1 ? 499999 ? 749998 ? 874998 ? 812498 ? 843748 ? 828123 ? 820310 ? 824216 ? 826169 ? 827146 ? 826657 ? 826901 ? 827023 ? 827084 ? 827115 ? 827130 ? 827138 ? 827142 ? 827144 ? 827145 ! 827145
result:
ok Correct position at 827145
Test #16:
score: 0
Accepted
time: 1ms
memory: 3644kb
input:
999996 1 0 1 2 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 10 9 10 10
output:
? 1 ? 499999 ? 2 ? 250000 ? 374999 ? 437499 ? 406249 ? 390624 ? 3 ? 382811 ? 386717 ? 388670 ? 389647 ? 390135 ? 390379 ? 390501 ? 390562 ? 390593 ? 390608 ? 390616 ? 390612 ? 390610 ? 390611 ! 390611
result:
ok Correct position at 390611
Test #17:
score: 0
Accepted
time: 4ms
memory: 3556kb
input:
999995 1 2 3 4 5 4 3 4 5 6 5 6 7 8 9 10 11 12 13 14 14
output:
? 1 ? 499998 ? 749997 ? 874996 ? 937496 ? 968746 ? 953121 ? 945308 ? 949214 ? 951167 ? 952144 ? 951655 ? 951899 ? 952021 ? 952082 ? 952113 ? 952128 ? 952136 ? 952140 ? 952142 ? 952143 ! 952143
result:
ok Correct position at 952143
Test #18:
score: 0
Accepted
time: 4ms
memory: 3612kb
input:
999994 1 0 1 0 1 2 3 2 1 2 3 4 5 6 7 8 9 10 11 10 9 10 10
output:
? 1 ? 499998 ? 2 ? 250000 ? 3 ? 125001 ? 187500 ? 218750 ? 203125 ? 195312 ? 199218 ? 201171 ? 202148 ? 202636 ? 202880 ? 203002 ? 203063 ? 203094 ? 203109 ? 203117 ? 203113 ? 203111 ? 203112 ! 203112
result:
ok Correct position at 203112
Test #19:
score: 0
Accepted
time: 4ms
memory: 3640kb
input:
999993 1 2 3 4 5 4 3 4 5 6 5 6 7 8 9 10 11 12 13 14 14
output:
? 1 ? 499997 ? 749995 ? 874994 ? 937494 ? 968744 ? 953119 ? 945306 ? 949212 ? 951165 ? 952142 ? 951653 ? 951897 ? 952019 ? 952080 ? 952111 ? 952126 ? 952134 ? 952138 ? 952140 ? 952141 ! 952141
result:
ok Correct position at 952141
Test #20:
score: 0
Accepted
time: 0ms
memory: 3772kb
input:
999992 1 0 1 2 3 4 3 2 3 4 5 4 5 6 7 8 9 10 11 10 11 11
output:
? 1 ? 499997 ? 2 ? 249999 ? 374998 ? 437497 ? 468747 ? 453122 ? 445309 ? 449215 ? 451168 ? 452145 ? 451656 ? 451900 ? 452022 ? 452083 ? 452114 ? 452129 ? 452137 ? 452141 ? 452139 ? 452140 ! 452140
result:
ok Correct position at 452140
Test #21:
score: 0
Accepted
time: 4ms
memory: 3660kb
input:
999991 1 2 3 2 3 2 1 2 3 4 3 4 5 6 7 8 9 10 11 12 12
output:
? 1 ? 499996 ? 749994 ? 874993 ? 812493 ? 843743 ? 828118 ? 820305 ? 824211 ? 826164 ? 827141 ? 826652 ? 826896 ? 827018 ? 827079 ? 827110 ? 827125 ? 827133 ? 827137 ? 827139 ? 827140 ! 827140
result:
ok Correct position at 827140
Test #22:
score: 0
Accepted
time: 2ms
memory: 3844kb
input:
1000000 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 3 4 5 5
output:
? 1 ? 500001 ? 2 ? 250001 ? 3 ? 125002 ? 4 ? 62503 ? 5 ? 31254 ? 6 ? 15630 ? 7 ? 7818 ? 8 ? 3913 ? 9 ? 1961 ? 10 ? 985 ? 11 ? 498 ? 12 ? 255 ? 13 ? 134 ? 14 ? 74 ? 15 ? 44 ? 16 ? 30 ? 37 ? 40 ? 42 ? 43 ! 43
result:
ok Correct position at 43
Test #23:
score: 0
Accepted
time: 3ms
memory: 3604kb
input:
999999 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 1 1
output:
? 1 ? 500000 ? 2 ? 250001 ? 3 ? 125002 ? 4 ? 62503 ? 5 ? 31254 ? 6 ? 15630 ? 7 ? 7818 ? 8 ? 3913 ? 9 ? 1961 ? 10 ? 985 ? 11 ? 498 ? 12 ? 255 ? 13 ? 134 ? 14 ? 74 ? 15 ? 44 ? 59 ? 51 ! 51
result:
ok Correct position at 51
Test #24:
score: 0
Accepted
time: 2ms
memory: 3816kb
input:
999998 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 1 1
output:
? 1 ? 500000 ? 2 ? 250001 ? 3 ? 125002 ? 4 ? 62503 ? 5 ? 31254 ? 6 ? 15630 ? 7 ? 7818 ? 8 ? 3913 ? 9 ? 1961 ? 10 ? 985 ? 11 ? 498 ? 12 ? 255 ? 13 ? 134 ? 14 ? 74 ? 15 ? 44 ? 59 ? 51 ! 51
result:
ok Correct position at 51
Test #25:
score: 0
Accepted
time: 3ms
memory: 3608kb
input:
999997 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 1 1
output:
? 1 ? 499999 ? 2 ? 250000 ? 3 ? 125001 ? 4 ? 62502 ? 5 ? 31253 ? 6 ? 15629 ? 7 ? 7818 ? 8 ? 3913 ? 9 ? 1961 ? 10 ? 985 ? 11 ? 498 ? 12 ? 255 ? 13 ? 134 ? 14 ? 74 ? 15 ? 44 ? 59 ? 51 ! 51
result:
ok Correct position at 51
Test #26:
score: 0
Accepted
time: 0ms
memory: 3692kb
input:
1000000 1 2 3 4 5 6 7 8 9 10 11 12 13 12 11 10 11 12 11 12 12
output:
? 1 ? 500001 ? 750001 ? 875001 ? 937501 ? 968751 ? 984376 ? 992188 ? 996094 ? 998047 ? 999024 ? 999512 ? 999756 ? 999878 ? 999817 ? 999786 ? 999771 ? 999778 ? 999782 ? 999780 ? 999781 ! 999781
result:
ok Correct position at 999781
Test #27:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
999999 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 16 16
output:
? 1 ? 500000 ? 750000 ? 875000 ? 937500 ? 968750 ? 984375 ? 992187 ? 996093 ? 998046 ? 999023 ? 999511 ? 999755 ? 999877 ? 999938 ? 999969 ? 999984 ? 999976 ? 999980 ! 999980
result:
ok Correct position at 999980
Test #28:
score: 0
Accepted
time: 2ms
memory: 3616kb
input:
999998 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 16 16
output:
? 1 ? 500000 ? 749999 ? 874999 ? 937499 ? 968749 ? 984374 ? 992186 ? 996092 ? 998045 ? 999022 ? 999510 ? 999754 ? 999876 ? 999937 ? 999968 ? 999983 ? 999975 ? 999979 ! 999979
result:
ok Correct position at 999979
Test #29:
score: 0
Accepted
time: 1ms
memory: 3668kb
input:
999997 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 16 16
output:
? 1 ? 499999 ? 749998 ? 874998 ? 937498 ? 968748 ? 984373 ? 992185 ? 996091 ? 998044 ? 999021 ? 999509 ? 999753 ? 999875 ? 999936 ? 999967 ? 999982 ? 999974 ? 999978 ! 999978
result:
ok Correct position at 999978
Test #30:
score: 0
Accepted
time: 0ms
memory: 3664kb
input:
1000000 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 13 12 13 12 11 11
output:
? 1 ? 500001 ? 2 ? 250001 ? 375001 ? 437501 ? 468751 ? 484376 ? 492188 ? 496094 ? 498047 ? 499024 ? 499512 ? 499756 ? 499878 ? 499939 ? 499970 ? 499954 ? 499946 ? 499950 ? 499948 ? 499947 ! 499947
result:
ok Correct position at 499947
Test #31:
score: 0
Accepted
time: 4ms
memory: 3608kb
input:
999999 1 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 1 0 1 2 1 1
output:
? 1 ? 500000 ? 750000 ? 625000 ? 2 ? 562500 ? 3 ? 531250 ? 4 ? 515625 ? 5 ? 507812 ? 6 ? 503906 ? 7 ? 501953 ? 8 ? 500976 ? 9 ? 500488 ? 10 ? 500244 ? 11 ? 500122 ? 12 ? 500061 ? 500091 ? 500076 ? 13 ? 500068 ? 500072 ? 500070 ! 500070
result:
ok Correct position at 500070
Test #32:
score: 0
Accepted
time: 2ms
memory: 3584kb
input:
999998 1 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 1 1
output:
? 1 ? 500000 ? 749999 ? 624999 ? 2 ? 562499 ? 3 ? 531249 ? 4 ? 515624 ? 5 ? 507812 ? 6 ? 503906 ? 7 ? 501953 ? 8 ? 500976 ? 9 ? 500488 ? 10 ? 500244 ? 11 ? 500122 ? 12 ? 500061 ? 500091 ? 500076 ! 500076
result:
ok Correct position at 500076
Test #33:
score: 0
Accepted
time: 3ms
memory: 3608kb
input:
999997 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 13 14 15 16 15 15
output:
? 1 ? 499999 ? 2 ? 250000 ? 374999 ? 437499 ? 468749 ? 484374 ? 492186 ? 496092 ? 498045 ? 499022 ? 499510 ? 499754 ? 499876 ? 499937 ? 499968 ? 499952 ? 499960 ? 499964 ? 499966 ? 499965 ! 499965
result:
ok Correct position at 499965
Test #34:
score: 0
Accepted
time: 4ms
memory: 3616kb
input:
1000000 1 0 1 2 1 0 1 0 1 0 1 2 3 4 3 4 5 6 7 6 7 6 5 4 4
output:
? 1 ? 500001 ? 2 ? 250001 ? 375001 ? 312501 ? 3 ? 281251 ? 4 ? 265626 ? 5 ? 257813 ? 261719 ? 263672 ? 264649 ? 264160 ? 264404 ? 264526 ? 264587 ? 264618 ? 264602 ? 264610 ? 264606 ? 264604 ? 264603 ! 264603
result:
ok Correct position at 264603
Test #35:
score: 0
Accepted
time: 3ms
memory: 3548kb
input:
999999 1 2 1 0 1 0 1 0 1 0 1 2 3 4 3 4 5 6 7 6 7 6 5 4 4
output:
? 1 ? 500000 ? 750000 ? 625000 ? 2 ? 562500 ? 3 ? 531250 ? 4 ? 515625 ? 5 ? 507812 ? 511718 ? 513671 ? 514648 ? 514159 ? 514403 ? 514525 ? 514586 ? 514617 ? 514601 ? 514609 ? 514605 ? 514603 ? 514602 ! 514602
result:
ok Correct position at 514602
Test #36:
score: 0
Accepted
time: 8ms
memory: 3816kb
input:
999998 1 0 1 0 1 0 1 0 1 0 1 0 1 2 1 0 1 2 3 4 5 6 5 6 5 4 3 3
output:
? 1 ? 500000 ? 2 ? 250001 ? 3 ? 125002 ? 4 ? 62503 ? 5 ? 31254 ? 6 ? 15630 ? 7 ? 7818 ? 11724 ? 9771 ? 8 ? 8794 ? 9282 ? 9526 ? 9648 ? 9709 ? 9740 ? 9724 ? 9732 ? 9728 ? 9726 ? 9725 ! 9725
result:
ok Correct position at 9725
Test #37:
score: 0
Accepted
time: 4ms
memory: 3684kb
input:
999997 1 2 3 2 1 0 1 0 1 2 3 4 3 4 5 6 7 6 7 6 5 4 4
output:
? 1 ? 499999 ? 749998 ? 874998 ? 812498 ? 781248 ? 2 ? 765623 ? 3 ? 757810 ? 761716 ? 763669 ? 764646 ? 764157 ? 764401 ? 764523 ? 764584 ? 764615 ? 764599 ? 764607 ? 764603 ? 764601 ? 764600 ! 764600
result:
ok Correct position at 764600
Test #38:
score: 0
Accepted
time: 3ms
memory: 3588kb
input:
1000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20
output:
? 1 ? 500001 ? 750001 ? 875001 ? 937501 ? 968751 ? 984376 ? 992188 ? 996094 ? 998047 ? 999024 ? 999512 ? 999756 ? 999878 ? 999939 ? 999970 ? 999985 ? 999993 ? 999997 ? 999999 ? 1000000 ! 1000000
result:
ok Correct position at 1000000
Test #39:
score: 0
Accepted
time: 1ms
memory: 3616kb
input:
999999 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20
output:
? 1 ? 500000 ? 750000 ? 875000 ? 937500 ? 968750 ? 984375 ? 992187 ? 996093 ? 998046 ? 999023 ? 999511 ? 999755 ? 999877 ? 999938 ? 999969 ? 999984 ? 999992 ? 999996 ? 999998 ? 999999 ! 999999
result:
ok Correct position at 999999
Test #40:
score: 0
Accepted
time: 4ms
memory: 3680kb
input:
999998 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20
output:
? 1 ? 500000 ? 749999 ? 874999 ? 937499 ? 968749 ? 984374 ? 992186 ? 996092 ? 998045 ? 999022 ? 999510 ? 999754 ? 999876 ? 999937 ? 999968 ? 999983 ? 999991 ? 999995 ? 999997 ? 999998 ! 999998
result:
ok Correct position at 999998
Test #41:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
999997 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20
output:
? 1 ? 499999 ? 749998 ? 874998 ? 937498 ? 968748 ? 984373 ? 992185 ? 996091 ? 998044 ? 999021 ? 999509 ? 999753 ? 999875 ? 999936 ? 999967 ? 999982 ? 999990 ? 999994 ? 999996 ? 999997 ! 999997
result:
ok Correct position at 999997
Test #42:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
1000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20
output:
? 1 ? 500001 ? 750001 ? 875001 ? 937501 ? 968751 ? 984376 ? 992188 ? 996094 ? 998047 ? 999024 ? 999512 ? 999756 ? 999878 ? 999939 ? 999970 ? 999985 ? 999993 ? 999997 ? 999999 ? 1000000 ! 1000000
result:
ok Correct position at 1000000
Test #43:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
1000000 0
output:
? 1 ! 1
result:
ok Correct position at 1