제출 #102466

#제출 시각아이디문제언어결과실행 시간메모리
102466Nicholas_PatrickGap (APIO16_gap)C++17
43.38 / 100
120 ms5892 KiB
#include "gap.h"
#include <set>
using namespace std;

long long findGap(int t, int n){
	set <long long> numbers;
	long long m, M;
	if(t==1){
		m=0;
		M=1000000000000000000;
		while(true){
			if(numbers.size()==n)
				break;
			if(m>M)
				break;
			MinMax(m, M, &m, &M);
			if(m==-1)
				break;
			numbers.insert(m);
			if(m==M)
				break;
			numbers.insert(M);
			m++;M--;
		}
	}else if(t==2){
		long long trueMin, trueMax;
		MinMax(0, 1000000000000000000, &trueMin, &trueMax);
		numbers.insert(trueMin);trueMin++;
		numbers.insert(trueMax);trueMax--;
		for(int i = 0;i < n>>1;i ++){
			m=((long double)((n>>1)-i)*trueMin+(long double)(i)*trueMax)/(n>>1);
			if(i==(n>>1)-1)
				M=1000000000000000000;
			else
				M=((long double)((n>>1)-i-1)*trueMin+(long double)(i+1)*trueMax)/(n>>1);
			while(true){
				if(numbers.size()==n)
					break;
				if(m>M)
					break;
				MinMax(m, M, &m, &M);
				if(m==-1)
					break;
				numbers.insert(m);
				if(m==M)
					break;
				numbers.insert(M);
				m++;M--;
			}
		}
	}
	m=0;
	set <long long>::iterator it=numbers.begin();
	M=*it;
	while(++it!=numbers.end()){
		m=max(m, *it-M);
		M=*it;
	}
	return m;
}

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

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:12:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if(numbers.size()==n)
       ~~~~~~~~~~~~~~^~~
gap.cpp:37:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(numbers.size()==n)
        ~~~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...