Submission #940968

#TimeUsernameProblemLanguageResultExecution timeMemory
940968hotboy2703Toxic Gene (NOI23_toxic)C++17
29.95 / 100
9 ms760 KiB
#include "toxic.h" #include<bits/stdc++.h> using namespace std; using ll = int; using ull = unsigned long long; using ld = long double; #define pll pair <ll,ll> #define fi first #define se second #define sz(a) (ll((a).size())) #define BIT(mask,i) (((mask) >> (i))&1) #define MASK(i) (1LL << (i)) #define MP make_pair ll ans[310]; //0 thuong 1 doc 2 manh ll wow = 0; ll query(vector <ll> all){ wow++; return query_sample(all); } //0 thuong 1 doc 2 manh void solve(vector <ll> all){ if (sz(all) == 1){ans[all.back()]=1;return;} ll mid = sz(all)/2; vector <ll> L; vector <ll> R; for (ll i = 0;i < mid;i++)L.push_back(all[i]); for (ll i = mid;i < sz(all);i ++)R.push_back(all[i]); if (query(L)!=sz(L)){ solve(L); if (query(R) != sz(R))solve(R); } else solve(R); } void determine_type(int n){ for (ll i = 1;i <= n;i ++)ans[i] = -1; for (ll i = 1;i <= n;i += 8){ vector <ll> all; for (ll j = 0;j < 8 && i + j <= n;j ++){ for (ll k = 0;k < MASK(j);k ++)all.push_back(i+j); } ll sus = query(all); // for (auto x:all)cout<<x<<' '; // cout<<endl; if (sus!=sz(all)){ // cout<<sus<<endl; vector <ll> tmp; for (ll j = 0;j < 8 && i + j <= n;j ++){ tmp.push_back(i+j); if (BIT(sus,j))ans[i+j] = 2; } solve(tmp); } } ll poison = -1; vector <ll> rem; for (ll i = 1;i <= n;i ++){ // cout<<ans[i]<<' '; if (ans[i] == 1){ poison = i; } else{ if (ans[i] == -1)rem.push_back(i); } } // for (auto x:rem)cout<<x<<' '; // cout<<'\n'; while (sz(rem)){ vector <ll> cur; while (sz(rem) && sz(cur) < 8){cur.push_back(rem.back());rem.pop_back();} vector <ll> all; for (ll j = 0;j < sz(cur);j ++){ for (ll k = 0;k < MASK(j);k ++){ all.push_back(cur[j]); } } all.push_back(poison); ll x = query(all); for (ll j = 0;j < sz(cur);j ++){ if (BIT(x,j)){ ans[cur[j]] = 2; } else ans[cur[j]] = 0; } } for (ll i = 1;i <= n;i ++){ if (ans[i]==0)answer_type(i,'R'); if (ans[i]==2)answer_type(i,'S'); if (ans[i]==1)answer_type(i,'T'); } }
#Verdict Execution timeMemoryGrader output
Fetching results...