제출 #845777

#제출 시각아이디문제언어결과실행 시간메모리
845777leinad2가장 긴 여행 (IOI23_longesttrip)C++17
15 / 100
12 ms600 KiB
#include "longesttrip.h" #include<bits/stdc++.h> using namespace std; int i, j, k, a, b, A[260][260], B[260]; vector<int> longest_trip(int N, int D) { vector<int>v1, v2; v1.push_back(0); v2.push_back(1); bool flag=false; for(i=2;i<N;i++) { vector<int>X, Y, Z; X.push_back(v1.back());Y.push_back(i);Z.push_back(v2.back()); if(are_connected(X, Y))v1.push_back(i); else if(flag)v2.push_back(i); else if(are_connected(Z, Y)) { flag=true; v2.push_back(i); } else { while(v2.size()) { v1.push_back(v2.back()); v2.pop_back(); } v2.push_back(i); } } for(i=0;i+1<v1.size();i++)assert(are_connected({v1[i]}, {v1[i+1]})); for(i=0;i+1<v2.size();i++)assert(are_connected({v2[i]}, {v2[i+1]})); if(are_connected(v1, v2)==0) { if(v1.size()<v2.size())swap(v1, v2); return v1; } vector<int>X, Y, Z, W; X.push_back(v1.back()); Z.push_back(v2[0]);W.push_back(v2.back()); if(are_connected(X, Z)) { for(auto p:v2)v1.push_back(p); return v1; } if(are_connected(X, W)) { while(v2.size()) { v1.push_back(v2.back()); v2.pop_back(); } return v1; } if(are_connected(X, v2)) { int s=0, e=v2.size()-1; while(s<e) { int m=s+e>>1; vector<int>V; for(i=0;i<=m;i++)V.push_back(v2[i]); if(are_connected(X, V))e=m; else s=m+1; } for(i=s;i<v2.size();i++)v1.push_back(v2[i]); for(i=0;i<s;i++)v1.push_back(v2[i]); return v1; } Y.push_back(v1[0]); if(are_connected(Y, v2)) { int s=0, e=v2.size()-1; while(s<e) { int m=s+e>>1; vector<int>V; for(i=0;i<=m;i++)V.push_back(v2[i]); if(are_connected(Y, V))e=m; else s=m+1; } reverse(v1.begin(), v1.end()); for(i=s;i<v2.size();i++)v1.push_back(v2[i]); for(i=0;i<s;i++)v1.push_back(v2[i]); return v1; } int s=0, e=v1.size()-1; while(s<e) { int m=s+e>>1; vector<int>V; for(i=0;i<=m;i++)V.push_back(v1[i]); if(are_connected(V, v2))e=m; else s=m+1; } int ss=s; s=0, e=v2.size()-1; X[0]=v1[s]; while(s<e) { int m=s+e>>1; vector<int>V; for(i=0;i<=m;i++)V.push_back(v2[i]); if(are_connected(X, V))e=m; else s=m+1; } vector<int>ans; for(i=ss-1;i>=0;i--)ans.push_back(v1[i]); for(i=v1.size()-1;i>=ss;i--)ans.push_back(v1[i]); for(i=s;i<v2.size();i++)ans.push_back(v2[i]); for(i=0;i<s;i++)ans.push_back(v2[i]); v1=v2; return v2; }

컴파일 시 표준 에러 (stderr) 메시지

longesttrip.cpp: In function 'std::vector<int> longest_trip(int, int)':
longesttrip.cpp:33:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for(i=0;i+1<v1.size();i++)assert(are_connected({v1[i]}, {v1[i+1]}));
      |             ~~~^~~~~~~~~~
longesttrip.cpp:34:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for(i=0;i+1<v2.size();i++)assert(are_connected({v2[i]}, {v2[i+1]}));
      |             ~~~^~~~~~~~~~
longesttrip.cpp:62:20: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   62 |             int m=s+e>>1;
      |                   ~^~
longesttrip.cpp:68:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |         for(i=s;i<v2.size();i++)v1.push_back(v2[i]);
      |                 ~^~~~~~~~~~
longesttrip.cpp:78:20: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   78 |             int m=s+e>>1;
      |                   ~^~
longesttrip.cpp:85:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   85 |         for(i=s;i<v2.size();i++)v1.push_back(v2[i]);
      |                 ~^~~~~~~~~~
longesttrip.cpp:92:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   92 |         int m=s+e>>1;
      |               ~^~
longesttrip.cpp:103:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  103 |         int m=s+e>>1;
      |               ~^~
longesttrip.cpp:112:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  112 |     for(i=s;i<v2.size();i++)ans.push_back(v2[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...