結果

問題 No.2248 max(C)-min(C)
ユーザー kotatsugame
提出日時 2023-03-17 22:02:40
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 537 ms / 3,000 ms
コード長 630 bytes
コンパイル時間 664 ms
コンパイル使用メモリ 74,904 KB
実行使用メモリ 16,128 KB
最終ジャッジ日時 2024-09-18 11:01:33
合計ジャッジ時間 12,343 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 51
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<set>
using namespace std;
int N;
int A[2<<17][3];
int id[2<<17];
int main()
{
	cin>>N;
	for(int i=0;i<N;i++)cin>>A[i][0];
	for(int i=0;i<N;i++)cin>>A[i][1];
	set<pair<int,int> >S;
	for(int i=0;i<N;i++)
	{
		int a=A[i][0],b=A[i][1];
		if(a>b)swap(a,b);
		A[i][0]=a;
		A[i][1]=(a+b)/2;
		A[i][2]=b;
		S.insert(make_pair(a,i));
	}
	int ans=S.rbegin()->first-S.begin()->first;
	while(true)
	{
		pair<int,int>p=*S.begin();
		S.erase(S.begin());
		int i=p.second;
		if(id[i]==2)break;
		id[i]++;
		S.insert(make_pair(A[i][id[i]],i));
		ans=min(ans,S.rbegin()->first-S.begin()->first);
	}
	cout<<ans<<endl;
}
0