Submission #1035019

#TimeUsernameProblemLanguageResultExecution timeMemory
1035019vjudge1Simurgh (IOI17_simurgh)C++17
0 / 100
1 ms604 KiB
#include "simurgh.h" #include<bits/stdc++.h> using namespace std; vector<int>R; int N_; int indexofr[601][601],deg[601]; void AD(int x,int y){ R.push_back(indexofr[x][y]); } int Q(){ assert(R.size()==N_-1); return count_common_roads(R); } void die(vector<int>k,int x){ for(auto i:k) AD(x,i); } vector<int>ans; std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v) { N_=n; int m=u.size(); for(int i=0;i<m;i++) indexofr[u[i]][v[i]]=indexofr[v[i]][u[i]]=i; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) if(j-i)AD(i,j); deg[i]=Q(); R.clear(); } set<int>st; for(int i=0;i<n;i++) st.insert(i); vector<int>done; for(int i=1;i<n;i++){ int x=0; for(int i=0;i<n;i++) if(deg[i]==1)x=i; R.clear(); deg[x]=0; st.erase(x); die(done,x); done.push_back(x); vector<int>V; for(auto i:st) V.push_back(i); while(V.size()>1){ vector<int>a,b,c,R2=R; for(int i=0;i<V.size();i+=2){ if(i+1==V.size()) break; a.push_back(V[i]); b.push_back(V[i+1]); AD(V[i],V[i+1]); if(V.size()-3*a.size()<=1) break; } for(int i=2*a.size();i<V.size();i++) c.push_back(V[i]); for(auto i:c) AD(x,i); for(auto i:a) AD(x,i); int A=Q(); for(auto i:a) R.pop_back(); for(auto i:b) AD(x,i); A-=Q(); R=R2; if(A<0) die(a,x), die(c,x),V=b; else if(A)die(b,x), die(c,x),V=a; else die(a,x),die(b,x),V=c; } deg[v[0]]--; ans.push_back(indexofr[x][v[0]]); } return ans; }

Compilation message (stderr)

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from simurgh.cpp:2:
simurgh.cpp: In function 'int Q()':
simurgh.cpp:10:25: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   10 | int Q(){ assert(R.size()==N_-1);
      |                 ~~~~~~~~^~~~~~
simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:47:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |             for(int i=0;i<V.size();i+=2){
      |                         ~^~~~~~~~~
simurgh.cpp:48:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |                 if(i+1==V.size())
      |                    ~~~^~~~~~~~~~
simurgh.cpp:56:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |             for(int i=2*a.size();i<V.size();i++)
      |                                  ~^~~~~~~~~
simurgh.cpp:63:22: warning: unused variable 'i' [-Wunused-variable]
   63 |             for(auto i:a)
      |                      ^
#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...