제출 #750839

#제출 시각아이디문제언어결과실행 시간메모리
750839PoPularPlusPlusGap (APIO16_gap)C++17
30 / 100
54 ms2256 KiB
#include "gap.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long 
#define pb(e) push_back(e)
#define sv(a) sort(a.begin(),a.end())
#define sa(a,n) sort(a,a+n)
#define mp(a,b) make_pair(a,b)
#define vf first
#define vs second
#define ar array
#define all(x) x.begin(),x.end()

long long findGap(int t, int n)
{
	if(t == 1 || n <= 10){
		ll arr[n];
		memset(arr,0,sizeof arr);
		ll l = 0 , r = 1000000000000000000;
		int i = 0 , j = n - 1;
		while(i <= j){
			MinMax(l , r , &arr[i] , &arr[j]);
			assert(arr[i] != -1);
			assert(arr[j] != -1);
			l = arr[i]+1;
			r = arr[j]-1;
			i++;
			j--;
		}
		ll ans = 0;
		for(i = 0; i < n-1; i++){
			ans = max(ans , arr[i+1]-arr[i]);
		}
		return ans;
	}
	vector<ll> v;
	ll mn , mx;
	MinMax(0,1e18,&mn,&mx);
	if(n == 2)return mx - mn;
	v.pb(mn);
	ll range = (mx - 1) - (mn + 1) + 1;
	ll div = range/(n-2);
	ll rem = range % (n - 2);
	ll cur = mn+1;
	for(ll i = 0; i < n - 2; i++){
		ll add = 0;
		if(rem < i)add = 1;
		ll x , y;
		ll r = cur + div + add - 1;
		MinMax(cur , r , &x , &y);
		if(x != -1){
			v.pb(x);
			if(x != y)v.pb(y);
		}
		cur = r + 1;
	}
	v.pb(mx);
	ll ans = 0;
	for(int i = 0; i < v.size()-1; i++){
		ans = max(ans , v[i+1]-v[i]);
	}
	return ans;
}

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

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:60:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |  for(int i = 0; i < v.size()-1; i++){
      |                 ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...