結果

問題 No.3585 Make Ends Meet (Easy)
コンテスト
ユーザー kotatsugame
提出日時 2026-07-10 21:40:12
言語 C++14
(gcc 15.2.0 + boost 1.90.0)
コンパイル:
g++-15 -O2 -lm -std=c++14 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,152 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 627 ms
コンパイル使用メモリ 101,140 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2026-07-10 21:40:15
合計ジャッジ時間 2,879 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 46 WA * 2
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include<iostream>
#include<vector>
#include<algorithm>
#include<cassert>
using namespace std;
int N,M,K;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>N>>M>>K;
	M=N*(N-1)/2-M;
	if(M<K)
	{
		cout<<"No"<<endl;
		return 0;
	}
	vector<vector<int> >L(K+1);
	L[0].push_back(1);
	for(int i=1;i<K;i++)L[i].push_back(i+1);
	L[K].push_back(N);
	for(int u=K+1,f=1;u<N;u++,f=3-f)
	{
		while(L.size()<=f)L.push_back(vector<int>());
		L[f].push_back(u);
	}
	vector<pair<int,int> >ans;
	for(int i=1;i<L.size();i++)
	{
		ans.push_back(minmax(L[i-1][0],L[i][0]));
	}
	for(int i=1;i<L.size();i++)
	{
		for(int j=0;j<L[i-1].size();j++)for(int k=0;k<L[i].size();k++)
		{
			if(j==0&&k==0)continue;
			ans.push_back(minmax(L[i-1][j],L[i][k]));
		}
	}
	for(int i=0;i<L.size();i++)for(int u:L[i])for(int v:L[i])if(u<v)ans.emplace_back(u,v);
	if(ans.size()<M)
	{
		cout<<"No"<<endl;
		return 0;
	}
	ans.resize(M);
	sort(ans.begin(),ans.end());
	cout<<"Yes\n";
	for(int u=1;u<=N;u++)for(int v=u+1;v<=N;v++)
	{
		int id=lower_bound(ans.begin(),ans.end(),make_pair(u,v))-ans.begin();
		if(id==ans.size()||ans[id]!=make_pair(u,v))cout<<u<<" "<<v<<"\n";
	}
}
0