Submission #1000320

#TimeUsernameProblemLanguageResultExecution timeMemory
1000320UnforgettableplChameleon's Love (JOI20_chameleon)C++17
0 / 100
24 ms600 KiB
#include <bits/stdc++.h> using namespace std; int Query(const std::vector<int> &p); void Answer(int a, int b); void Solve(int N) { int n = N; vector<vector<int>> adj(2*n+1); set<pair<int,int>> edges; for(int i=1;i<=n;i++){ // Find all edges which correspond to vector<int> msuspects(n);iota(msuspects.begin(),msuspects.end(),n+1); while(true){ auto base = Query(msuspects); msuspects.emplace_back(i); if(Query(msuspects)>base)break; msuspects.erase(--msuspects.end()); auto suspects = msuspects; while(suspects.size()>1){ int mid = suspects.size()/2; vector<int> left,right; for(int i=0;i<mid;i++)left.emplace_back(suspects[i]); for(int i=mid;i<suspects.size();i++)right.emplace_back(suspects[i]); auto b = Query(left); left.emplace_back(i); if(Query(left)>b)suspects=right; else { left.erase(--left.end()); suspects = left; } } msuspects.erase(lower_bound(msuspects.begin(),msuspects.end(),suspects[0])); edges.insert({i,suspects[0]}); adj[i].emplace_back(suspects[0]); adj[suspects[0]].emplace_back(i); } } for(int i=1;i<=2*n;i++){ if(adj[i].size()==1)continue; assert(adj[i].size()==3); if(Query({i,adj[i][0],adj[i][1]})==1)edges.erase({min(i,adj[i][2]),max(i,adj[i][2])}); else if(Query({i,adj[i][0],adj[i][2]})==1)edges.erase({min(i,adj[i][1]),max(i,adj[i][1])}); else edges.erase({min(i,adj[i][0]),max(i,adj[i][0])}); } for(auto[a,b]:edges)Answer(a,b); }

Compilation message (stderr)

chameleon.cpp: In function 'void Solve(int)':
chameleon.cpp:24:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   24 |                 for(int i=mid;i<suspects.size();i++)right.emplace_back(suspects[i]);
      |                               ~^~~~~~~~~~~~~~~~
#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...