Submission #446022

#TimeUsernameProblemLanguageResultExecution timeMemory
446022flappybirdLibrary (JOI18_library)C++14
19 / 100
654 ms436 KiB
#include <bits/stdc++.h> #include <cassert> #include "library.h" using namespace std; typedef int ll; vector<ll> asdf; vector<ll> chk; vector<ll> p, e; ll n; void randp(ll N) { p.resize(N); ll i; for (i = 0; i < N; i++) p[i] = i + 1; for (i = N - 1; i >= 1; i--) { ll a; a = rand() % i; swap(p[i], p[a]); } } ll cnt = 0; ll query(vector<ll> &v) { cnt++; vector<ll> a; a.resize(n); for (auto x : v) a[x - 1] = 1; return Query(a); } void Solve(int N) { n = N; srand(time(NULL)); chk.resize(N + 1); ll i, a; ll sz = N; for (a = 1; a <= N; a++) { asdf.clear(); for (ll i = 1; i <= N; i++) if (!chk[i]) asdf.push_back(i); sz = asdf.size(); if (asdf.size() <= 2) { e.push_back(asdf[0]); chk[asdf[0]] = 1; continue; } vector<ll> q1, q2; do { randp(sz); q1.clear(); q2.clear(); for (i = 0; i < sz; i++) { if (p[i] <= sz / 2) q1.push_back(asdf[i]); else q2.push_back(asdf[i]); } } while ((query(q1) + query(q2)) % 2); ll l, r; l = 0, r = q1.size() - 1; vector<ll> v1, v2; while (l < r) { v1 = q1; v2 = q2; ll mid = (l + r) / 2; for (ll k = mid + 1; k < q1.size(); k++) v2.push_back(v1[k]); for (ll k = mid + 1; k < q1.size(); k++) v1.pop_back(); if ((query(v1) + query(v2)) % 2) l = mid + 1; else r = mid; } e.push_back(q1[r]); chk[q1[r]] = 1; } deque<ll> d; for (i = N - 1; i >= 0; i--) { if (d.empty()) { d.push_back(e[i]); continue; } ll b = d.back(); vector<ll> v; v.push_back(b); v.push_back(e[i]); if (query(v) == 1) d.push_back(e[i]); else d.push_front(e[i]); } vector<ll> ans; while (!d.empty()) { ans.push_back(d.back()); d.pop_back(); } Answer(ans); }

Compilation message (stderr)

library.cpp: In function 'void Solve(int)':
library.cpp:65:27: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |    for (ll k = mid + 1; k < q1.size(); k++) v2.push_back(v1[k]);
      |                         ~~^~~~~~~~~~~
library.cpp:66:27: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |    for (ll k = mid + 1; k < q1.size(); k++) v1.pop_back();
      |                         ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...