Submission #1122717

#TimeUsernameProblemLanguageResultExecution timeMemory
1122717aaaaaarrozSphinx's Riddle (IOI24_sphinx)C++20
0 / 100
0 ms412 KiB
#include <bits/stdc++.h> using namespace std; int perform_experiment(vector<int> e); vector<int>alll(int n,vector<int> x,vector<int> y){ vector<int>color(n); for(int i=0;i<n;i++){ vector<int>nodos; for(int j=0;j<n;j++){ if(j!=i){ nodos.push_back(j); } } int l=0,r=n-1; while(l<r){ int mid=(l+r)/2; vector<int>exp(n,l); exp[i]=-1; int node=0; for(int j=l;j<=mid;j++){ exp[nodos[node]]=j; node++; } int experimento=perform_experiment(exp); if(experimento==(mid-l+1)){ r=mid; } else{ l=mid+1; } } color[i]=l; } return color; } vector<int>uno(int n,vector<int> x,vector<int> y){ vector<int>color(n); color[0]=0; for(int i=1;i<n;i++){ vector<int>exp(n,n); exp[i]=-1; exp[i-1]=color[i-1]; if(perform_experiment(exp)==3){ if(color[i-1]==0){ color[i]=1; } else{ color[i]=0; } } else{ color[i]=color[i-1]; } } return color; } vector<int> find_colours(int n,vector<int> x,vector<int> y){ vector<int>grado(n,0); for(int i=0;i<x.size();i++){ grado[x[i]]++; grado[y[i]]++; } bool all=true; bool solo1=false; int unos=0, dos=0; for(int i=0;i<n;i++){ if(grado[i]!=(n-1)){ all=false; } if(grado[i]==1){ unos++; } if(grado[i]==2){ dos++; } } if(unos==2&&dos==(n-2)){ solo1=true; } if(solo1){ return uno(n,x,y); } if(all){ return alll(n,x,y); } vector<int> color(n, -1); for (int i = 0; i < n; ++i) { for (int c = 0; c < n; ++c){ vector<int> e(n, c); e[i] = -1; int foo = perform_experiment(e); if (foo == 1) { color[i] = c; break; } } } return color; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...