| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1330847 | miminyte | Worm Worries (BOI18_worm) | C++20 | 2 ms | 4336 KiB |
#include <iostream>
#include <vector>
#include <map>
using namespace std;
vector <int> v;
int ask(int i) {
cout << "? " << i+1 << " 1 1" << endl;
cin >> v[i];
return v[i];
}
int main() {
int n, m, k, q;
cin >> n >> m >> k >> q;
v.resize(n, -1);
int l = 0, r = n - 1, mid;
int a = n/3, b = 2*n/3;
ask(a);
ask(b);
if(v[a] < v[b]) {
l = a;
mid = b;
} else {
r = b;
mid = a;
}
int curr;
while(r - mid > 1 || mid - l > 1) {
if(r - mid > mid - l) {
curr = (mid + r) / 2;
ask(curr);
if(v[curr] < v[mid]) {
r = curr;
} else {
l = mid;
mid = curr;
}
}
else {
curr = (mid + l) / 2;
ask(curr);
if(v[curr] < v[mid]) {
l = curr;
} else {
r = mid;
mid = curr;
}
}
}
if(mid > 0 && v[mid-1] == -1) {
ask(mid-1);
}
if(mid < n-1 && v[mid+1] == -1) {
ask(mid+1);
}
if(v[mid] >= v[mid-1] && v[mid] >= v[mid+1]) {
cout << "! " << mid + 1 << " 1 1" << endl;
} else if(v[mid-1] >= v[mid]) {
cout << "! " << mid - 1 + 1 << " 1 1" << endl;
} else {
cout << "! " << mid + 1 + 1 << " 1 1" << endl;
}
return 0;
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
