제출 #1194064

#제출 시각아이디문제언어결과실행 시간메모리
1194064nouka28Gap (APIO16_gap)C++20
100 / 100
49 ms5216 KiB
#include "gap.h"

#include<bits/stdc++.h>
using namespace std;

#define int long long

#define rep(i,n) for(int i=0;i<(n);i++)
#define rng(i,l,r) for(int i=(l);i<(r);i++)
#define rrep(i,n) for(int i=(n)-1;i>=0;i--)
#define rrng(i,l,r) for(int i=(r)-1;i>=(l);i--)

#define fi first
#define se second
#define all(x) (x).begin(),(x).end()

long long findGap(signed T, signed N)
{

	if(T==1){
		int mn=1LL,mx=1000000000000000000LL;
		
		vector<int> a;
		rep(i,(N+1)/2){
			int l=mn,r=mx;
			MinMax(l,r,&mn,&mx);
			a.push_back(mn);
			if(mn!=mx)a.push_back(mx);
			mn++,mx--;
		}

		sort(all(a));
		int ans=-1;
		rep(i,N-1)ans=max(ans,a[i+1]-a[i]);
		return ans;
	}

	if(T==2){
		int mn,mx;
		MinMax(1LL,1000000000000000000LL,&mn,&mx);

		if(N==2){
			return mx-mn;
		}

		int t=mx-mn-1;
		vector<int> d(N-2);
		for(auto&&e:d)e=t/(N-2);
		t-=accumulate(all(d),0LL);
		for(auto&&e:d)if(t){t--,e++;}

		vector<pair<int,int>> vs={{mn,mn+d[0]}};

		vector<int> a={mn,mx};

		rep(i,N-2){
			if(i){
				vs.push_back({vs.back().se+1,vs.back().se+1+d[i]});
			}
			auto[l,r]=vs.back();
			MinMax(l,r,&mn,&mx);
			if(mn==-1)continue;
			a.push_back(mn),a.push_back(mx);
		}

		sort(all(a));

		int ans=-1;
		rep(i,a.size()-1)ans=max(ans,a[i+1]-a[i]);

		return ans;
	}
}

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

gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:73:1: warning: control reaches end of non-void function [-Wreturn-type]
   73 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...