Submission #840673

#TimeUsernameProblemLanguageResultExecution timeMemory
840673de_sousaLongest Trip (IOI23_longesttrip)C++17
15 / 100
17 ms428 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; std::vector<int> longest_trip(int N, int D) { vector<int> S1; vector<int> S2; S1.push_back(0); S2.push_back(1); for(int i=2;i<N;i++){ if(are_connected({S1.back()},{i})){ S1.push_back(i); } else if(are_connected({S2.back()},{i})){ S2.push_back(i); } else{ while(S2.size()){ S1.push_back(S2.back()); S2.pop_back(); } S2.push_back(i); } } if(S1.size()<S2.size())swap(S1,S2); if(!are_connected(S1,S2)) return S1; if(!are_connected({S1[0]},{S1.back()})){ while(S2.size()){ S1.push_back(S2.back()); S2.pop_back(); } return S1; } if(S2.size()!=1&&!are_connected({S2[0]},{S2.back()})){ while(S1.size()){ S2.push_back(S1.back()); S1.pop_back(); } return S2; } vector<int> cand1=S1; vector<int> cand2=S2; while(cand1.size()!=1){ vector<int> tmp1=cand1; vector<int> tmp2; int target=tmp1.size()/2; while(tmp1.size()!=target){ tmp2.push_back(tmp1.back()); tmp1.pop_back(); } if(are_connected(tmp1,cand2))cand1=tmp1; else cand1=tmp2; } swap(cand1,cand2); while(cand1.size()!=1){ vector<int> tmp1=cand1; vector<int> tmp2; int target=tmp1.size()/2; while(tmp1.size()!=target){ tmp2.push_back(tmp1.back()); tmp1.pop_back(); } if(are_connected(tmp1,cand2))cand1=tmp1; else cand1=tmp2; } swap(cand1,cand2); int pos1=0; for(int i=0;i<S1.size();i++){ if(S1[i]==cand1[0])pos1=i; } int pos2=0; for(int i=0;i<S2.size();i++){ if(S2[i]==cand2[0])pos2=i; } vector<int> S3; S3.push_back(S1[pos1]); for(int i=(pos1+1)%S1.size();i!=pos1;i=(i+1)%S1.size())S3.push_back(S1[i]); reverse(S3.begin(),S3.end()); S3.push_back(S2[pos2]); for(int i=(pos2+1)%S2.size();i!=pos2;i=(i+1)%S2.size())S3.push_back(S2[i]); return S3; }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:56:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   56 |  while(tmp1.size()!=target){
      |        ~~~~~~~~~~~^~~~~~~~
longesttrip.cpp:69:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   69 |  while(tmp1.size()!=target){
      |        ~~~~~~~~~~~^~~~~~~~
longesttrip.cpp:79:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |     for(int i=0;i<S1.size();i++){
      |                 ~^~~~~~~~~~
longesttrip.cpp:84:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |     for(int i=0;i<S2.size();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...