제출 #229989

#제출 시각아이디문제언어결과실행 시간메모리
229989kshitij_sodaniGap (APIO16_gap)C++17
100 / 100
77 ms3308 KiB
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
typedef long long llo;
#define mp make_pair
#define a first
#define b second
#define pb push_back
#include "gap.h"

/*void MinMax(llo aa,llo bb,llo &cc,llo &dd){
	cout<<aa<<" "<<bb<<endl;
	llo x,y;
	cin>>x>>y;
	cc=x;
	dd=y;
}*/
llo findGap(int t,int n){
	if(t==2){
		llo low,high;
		MinMax(0,1e18,&low,&high);
	//	cout<<0<<" "<<(llo)1e18<<endl;
	//	cin>>low>>high;
		llo di=(high-low)/((llo)(n-1));
		if((high-low)%(n-1)>0){
			di+=1;
		}
		vector<llo> ans;
		ans.pb(low);
		ans.pb(high);
		for(llo i=low+1;i<=high;i+=di){
			llo ss,tt;
			MinMax(i,i+di-1,&ss,&tt);
		//	cout<<i<<" "<<i+di-1<<endl;
		//	cin>>ss>>tt;
			if(ss==-1 or tt==-1){
				continue;
			}
			ans.pb(ss);
			ans.pb(tt);
		}
		llo ans2=0;
		sort(ans.begin(),ans.end());
		for(llo i=0;i<ans.size()-1;i++){
			ans2=max(ans2,ans[i+1]-ans[i]);
		}
		return ans2;
	}
	else{
		llo mi=0;
		llo lo=1e18;
		llo aa[n];
		for(int i=0;i<(n+1)/2;i++){
			llo ss,tt;
			MinMax(mi,lo,&ss,&tt);
			mi=ss+1;
			lo=tt-1;
			aa[i]=ss;
			aa[n-i-1]=tt;
		}
		llo ans=0;
		for(int i=0;i<n-1;i++){
			ans=max(ans,aa[i+1]-aa[i]);
		}
		return ans;
	}
}

/*int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout<<findGap(2,4)<<endl;


	return 0;
}*/

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

gap.cpp: In function 'llo findGap(int, int)':
gap.cpp:44:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(llo i=0;i<ans.size()-1;i++){
               ~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...