Submission #1148636

#TimeUsernameProblemLanguageResultExecution timeMemory
1148636fatman87878Toxic Gene (NOI23_toxic)C++20
0 / 100
0 ms320 KiB
#include "toxic.h" #include<bits/stdc++.h> using namespace std; #define IOS cin.tie(nullptr)->sync_with_stdio(0),cin.exceptions(cin.failbit); #define lb(x) (x)&-(x) #define all(x) (x).begin(),(x).end() #define ll long long constexpr int blk = 8; void determine_type(int n){ mt19937 rng(time(0)*114514); int toxic; vector<int> idx(n+1),nottoxic,isstrong(n+1),istoxic(n+1); iota(all(idx),0); shuffle(idx.begin()+1,idx.end(),rng); auto chk = [&](auto self,int l,int r) -> void { for(int i = 1;i<=n;){ vector<int> ask(1,toxic); for(int cnt = 0,k = i;cnt<blk&&k<=n;k++,cnt++){ for(int j = 0;j<1<<cnt;j++)ask.emplace_back(idx[k]); } int ret = query_sample(ask); if(query_sample(ask)!=ask.size()){ for(;i<r;i++,ret>>=1){ if(ret&1)isstrong[idx[i]] = 1; else if(!query_sample({idx[i]}))istoxic[toxic=idx[i]]=1; } } else { for(;i<r;i++)nottoxic.emplace_back(idx[i]); } } }; chk(chk,1,n+1); for(int i = 0;i<nottoxic.size();){ vector<int> ask(1,toxic); for(int cnt = 0,k = i;cnt<8&&k<nottoxic.size();k++,cnt++){ for(int j = 0;j<1<<cnt;j++)ask.emplace_back(nottoxic[k]); } int ret = query_sample(ask); for(int cnt = 0;cnt<8&&i<nottoxic.size();i++,cnt++,ret>>=1){ isstrong[nottoxic[i]] = ret&1; } } for(int i = 1;i<=n;i++){ if(istoxic[i])answer_type(i,'T'); else if(isstrong[i])answer_type(i,'S'); else answer_type(i,'R'); } }
#Verdict Execution timeMemoryGrader output
Fetching results...