제출 #1312891

#제출 시각아이디문제언어결과실행 시간메모리
1312891Jawad_Akbar_JJLongest Trip (IOI23_longesttrip)C++20
5 / 100
4 ms412 KiB
#include <iostream>
#include <vector>
#include "longesttrip.h"

using namespace std;

int get(vector<int> A, vector<int> B){
	int l = -1, r = A.size() - 1;
	while (l + 1 < r){
		int m = (l + r) / 2;
		vector<int> v;
		v.insert(v.end(), A.begin(), A.begin() + m + 1);
		if (v.size() == 0){
			cout<<l<<" "<<r<<" "<<m<<" "<<A.size()<<endl;
			cout<<1 / 0;
		}
		if (are_connected(v, B))
			r = m;
		else
			l = m;
	}
	return r;
}

vector<int> longest_trip(int n, int D){
	vector<int> A = {0}, B, v;

	for (int i=1;i<n;i++){
		if (are_connected({A[0]}, {i}))
			A.push_back(i);
		else
			B.push_back(i);
		if (A.size() < B.size())
			swap(A, B);
	}

	if (B.size() == 0 or are_connected(A, B) == 0)
		return A;

	int l1 = get(A, B), l2 = get(B, {A[l1]});
	if (l2 == 0)
		swap(A, B), swap(l1, l2);

	if (l1){
		for (int i=1;i<=l1;i++)
			A.push_back(A[0]), A.erase(begin(A));
		for (int i=1;i<=l2;i++)
			B.push_back(B[0]), B.erase(begin(B));
	}
	else if (are_connected({A[0]}, {B.back()})){
		B.insert(B.begin(), B.back());
		B.pop_back();
	}
	else{
		for (int i=1;i<=l2;i++)
			B.push_back(B[0]), B.erase(begin(B));
	}

	for (int i : B)
		A.insert(A.begin(), i);
	return A;
}

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

longesttrip.cpp: In function 'int get(std::vector<int>, std::vector<int>)':
longesttrip.cpp:15:33: warning: division by zero [-Wdiv-by-zero]
   15 |                         cout<<1 / 0;
      |                               ~~^~~
#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...