結果

問題 No.507 ゲーム大会(チーム決め)
ユーザー vjudge1
提出日時 2025-02-24 15:21:25
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 23 ms / 3,000 ms
コード長 525 bytes
コンパイル時間 3,612 ms
コンパイル使用メモリ 275,648 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2025-02-24 15:21:42
合計ジャッジ時間 4,644 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 19
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,l,r,mid,rk,ans,a[100005];
bool check(int x)
{
	rk=0;
	for(int i=1,j=n;i<j;)
	{
		if(i==x)i++;if(j==x)j--;
		if(i>=j)break;
		if(a[i]+a[j]>a[0]+a[x]){j--;rk++;}
		i++;
	}
	return rk<m;
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(int i=0;i<n;i++)cin>>a[i];
	sort(a+1,a+n);n--;
	l=1;r=n;
	while(l<=r)
	{
		mid=l+r>>1;
		if(check(mid)){ans=mid;r=mid-1;}
		else l=mid+1;
	}
	if(ans)cout<<a[ans];
	else cout<<-1;
}
0