Submission #1291611

#TimeUsernameProblemLanguageResultExecution timeMemory
1291611simona1230Chameleon's Love (JOI20_chameleon)C++20
0 / 100
1 ms332 KiB
#include<bits/stdc++.h> #include "chameleon.h" using namespace std; int n; vector<int> v[512]; int u[512][512]; void subt() { vector<int> g; for(int i=n+1;i<=2*n;i++) g.push_back(i); for(int i=1;i<=n;i++) { int l=n+1,r=2*n; g.push_back(i); int q=Query(g); g.pop_back(); if(q==1) { int curr=0; while(l<=r) { int m=(l+r)/2; vector<int> h={i}; for(int j=n+1;j<=m;j++) h.push_back(j); if(Query(h)==m-n) { curr=m; r=m-1; } else l=m+1; } cout<<i<<" - "<<curr<<endl; Answer(i,curr); } else { int curr1=0; while(l<=r) { int m=(l+r)/2; vector<int> h={i}; for(int j=n+1;j<=m;j++) h.push_back(j); if(Query(h)==m-n-1) { curr1=m; r=m-1; } else l=m+1; } int curr2=0; l=n+1,r=2*n; while(l<=r) { int m=(l+r)/2; vector<int> h={i}; for(int j=n+1;j<=m;j++) h.push_back(j); if(Query(h)==m-n) { curr2=m; l=m+1; } else r=m-1; } vector<int> v1={i}; for(int j=n+1;j<curr1;j++) v1.push_back(j); int k=curr1-n-1; cout<<curr1<<" + "<<curr2<<endl; if(Query(v1)==k-1) { cout<<i<<" "<<curr2<<endl; Answer(i,curr2); } else { cout<<i<<" "<<curr1<<endl; Answer(i,curr1); } } } } void Solve(int N) { n=N; if(1) { subt(); return; } for(int i=1;i<=2*N;i++) { for(int j=i+1;j<=2*N;j++) { int q=Query({i,j}); if(q==1) { v[i].push_back(j); v[j].push_back(i); } } } /*for(int i=1;i<=2*n;i++) { cout<<i<<" : "; for(int j=0;j<v[i].size();j++) cout<<v[i][j]<<" "; cout<<endl; }*/ for(int i=1;i<=2*n;i++) { if(v[i].size()==3) { int v0=v[i][0],v1=v[i][1],v2=v[i][2]; int q1=Query({v0,v1,i}); int q2=Query({v0,v2,i}); if(q1==1)u[i][v2]=u[v2][i]=1; else if(q2==1)u[i][v1]=u[v1][i]=1; else u[i][v0]=u[v0][i]=1; } } for(int i=1;i<=2*n;i++) { for(int j=0;j<v[i].size();j++) { int nb=v[i][j]; if(i<nb&&!u[i][nb]) { //cout<<i<<" "<<nb<<endl; Answer(i,nb); } } } } /* 4 0 0 0 0 1 1 1 1 1 2 3 4 1 2 3 4 7 5 8 6 2 3 4 1 */
#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...