Submission #897045

#TimeUsernameProblemLanguageResultExecution timeMemory
897045irmuunLongest Trip (IOI23_longesttrip)C++17
15 / 100
8 ms608 KiB
#include<bits/stdc++.h> #include "longesttrip.h" using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() vector<int>longest_trip(int N, int D){ vector<int>ans; if(D==3){ vector<int>ans(N); iota(all(ans),0); return ans; } if(D==2){ vector<int>ans; ans.pb(0); int l=0,r=0; int x; for(int i=1;i<N;i++){ if(are_connected({0},{i})==true){ ans.pb(i); x=i; r=i; break; } } for(int i=1;i<N;i++){ if(i!=x){ if(are_connected({l},{i})){ ans.insert(ans.begin(),i); l=i; } else{ ans.pb(i); r=i; } } } return ans; } vector<int>v,u; v.pb(0); u.pb(1); for(int i=2;i<N;i++){ if(are_connected({v.back()},{i})==true){ v.pb(i); } else if(are_connected({u.back()},{i})==true){ u.pb(i); } else{ reverse(all(u)); v.insert(v.end(),all(u)); u={i}; } } if(are_connected(v,u)==false){ if(v.size()>=u.size()){ return v; } return u; } //now need combine 2 cycles vector<int>v1=v,u1=u; while(v1.size()>1){ vector<int>l,r; for(int i=0;i<v1.size()/2;i++){ l.pb(v1[i]); } for(int i=v1.size()/2;i<v1.size();i++){ r.pb(v1[i]); } if(are_connected(l,u1)==true){ v1=l; } else{ v1=r; } } while(u1.size()>1){ vector<int>l,r; for(int i=0;i<u1.size()/2;i++){ l.pb(v1[i]); } for(int i=u1.size()/2;i<u1.size();i++){ r.pb(v1[i]); } if(are_connected(v1,l)==true){ v1=l; } else{ v1=r; } } for(int i=0;i<v.size();i++){ if(v[i]==v1[0]){ rotate(v.begin(),v.begin()+i,v.end()); break; } } for(int i=0;i<u.size();i++){ if(u[i]==u1[0]){ rotate(u.begin(),u.begin()+i,u.end()); break; } } reverse(all(u)); v.insert(v.end(),all(u)); return v; }

Compilation message (stderr)

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:23:17: warning: variable 'r' set but not used [-Wunused-but-set-variable]
   23 |         int l=0,r=0;
      |                 ^
longesttrip.cpp:73:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |         for(int i=0;i<v1.size()/2;i++){
      |                     ~^~~~~~~~~~~~
longesttrip.cpp:76:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |         for(int i=v1.size()/2;i<v1.size();i++){
      |                               ~^~~~~~~~~~
longesttrip.cpp:88:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |         for(int i=0;i<u1.size()/2;i++){
      |                     ~^~~~~~~~~~~~
longesttrip.cpp:91:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |         for(int i=u1.size()/2;i<u1.size();i++){
      |                               ~^~~~~~~~~~
longesttrip.cpp:101:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  101 |     for(int i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
longesttrip.cpp:107:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  107 |     for(int i=0;i<u.size();i++){
      |                 ~^~~~~~~~~
longesttrip.cpp:34:13: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
   34 |             if(i!=x){
      |             ^~
#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...