제출 #1223162

#제출 시각아이디문제언어결과실행 시간메모리
1223162spetrHow to Avoid Disqualification in 75 Easy Steps (CEOI23_avoid)C++20
15 / 100
1 ms612 KiB
#include "avoid.h" #include <vector> #include <bits/stdc++.h> using namespace std; std::pair<int, int> scout(int R, int H) { if (H == 1){ int velikost = 1; vector<vector<int>> v; for (int i = 0; i < 1000; i++){ v.push_back({}); } for (int i = 0; i < R; i++){ vector<int> pole; for (int j = 1; j <= 1000; j+= 2*velikost){ for (int k = j; k < j+velikost && k <= 1000; k++){ pole.push_back(k); v[k-1].push_back(i); } } velikost *= 2; send(pole); } auto p = wait(); for (int i = 0; i < 1000; i++){ bool ok = true; for (int j = 0; j < v[i].size(); j++){ if (p[v[i][j]] == 0){ ok = false; break; } } if (ok){ return {i+1,i+1}; } } } else{ int l,r; l = 1; r = 1000; vector<int> p; while (l < r){ vector<int> pole; int mid = (l+r)/2; for (int i = 1; i <= mid; i++){ pole.push_back(i); } send(pole); p = wait(); if (p[0] == 1){ r = mid; } else{ l = mid+1; } } int a = l; l = 1; r = 1000; while (l < r) { vector<int> pole; int mid = l + (r - l + 1) / 2; for (int i = mid; i <= 1000; i++) pole.push_back(i); send(pole); p = wait(); if (p[0] == 1) // alespoň jeden chairman v [mid..1000] l = mid; else r = mid - 1; } int b = l; return {a,b}; } return {1,1}; }
#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...