제출 #280181

#제출 시각아이디문제언어결과실행 시간메모리
280181spdskatrColors (BOI20_colors)C++14
0 / 100
1 ms384 KiB
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cassert> #include <vector> #define K 32 using namespace std; int N; int seen[1005]; vector<int> qu; int query(int x) { assert(!seen[x]); seen[x] = 1; printf("? %d\n", x); fflush(stdout); int res; scanf("%d", &res); return res; } void answer(int ans) { printf("= %d\n", ans); fflush(stdout); exit(0); } int main() { scanf("%d", &N); assert(N <= 1000); qu.push_back(0); for (int i = 1; i * K < N; i++) { if (qu.size() <= 1 || qu[qu.size()-1] < qu[qu.size()-2]) { qu.push_back(qu.back() + i * K); } else { qu.push_back(qu.back() - i * K); } } // Stick to left int diff = 1 - qu.back(); if (qu.back() > 0) { // Last move was forward, stick to right diff = N - qu.back(); } for (int i = 0; i < qu.size(); i++) qu[i] += diff; for (int i = 0; i < qu.size(); i++) { int res = query(qu[i]); if (i > 0 && res) { int low = 0; int cur = qu[i]; if (i >= 2) low = abs(qu[i-1] - qu[i-2]); for (int j = abs(qu[i] - qu[i-1]) - 1; j > low; j--) { if (cur > qu[0]) { cur -= j; } else { cur += j; } if (!query(cur)) { answer(j+1); } } answer(low+1); } } // Should either be at N or 1 { int cur = qu.back(); int par = cur <= qu[0]; for (int j = N-1; j > (N / K) * K; j--) { if (par) { cur += j; } else { cur -= j; } par = !par; if (!query(cur)) { answer(j+1); } } answer((N / K) * K + 1); } assert(false); }

컴파일 시 표준 에러 (stderr) 메시지

Colors.cpp: In function 'int main()':
Colors.cpp:47:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |  for (int i = 0; i < qu.size(); i++) qu[i] += diff;
      |                  ~~^~~~~~~~~~~
Colors.cpp:48:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |  for (int i = 0; i < qu.size(); i++) {
      |                  ~~^~~~~~~~~~~
Colors.cpp: In function 'int query(int)':
Colors.cpp:20:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   20 |  scanf("%d", &res);
      |  ~~~~~^~~~~~~~~~~~
Colors.cpp: In function 'int main()':
Colors.cpp:31:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   31 |  scanf("%d", &N);
      |  ~~~~~^~~~~~~~~~
#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...