結果
| 問題 | No.3585 Make Ends Meet (Easy) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-07-10 21:40:12 |
| 言語 | C++14 (gcc 15.2.0 + boost 1.90.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,152 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
#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";
}
}