题解 CF1283F 【DIY Garland】
出题人题解咕掉了,照着代码理解了一下写写个人的看法。
对于所有合法数据均能构造出这样的解,不需要考虑无解情况。
code:
#include <bits/stdc++.h>
#define MAXN 210000
#define _ 0
using namespace std;
int n;
int a[MAXN];
int used[MAXN];
int main()
{
int n;
cin>>n;
int cur=n;
n--;
for (int i=1;i<=n;i++)
scanf("%d",&a[i]);
cout<<a[1]<<endl;
used[a[1]]=1;
for (int i=1;i<=n;i++)
{
while (used[cur])
cur--;
if (used[a[i+1]] || i==n)
{
cout<<a[i]<<' '<<cur<<endl;
used[cur]=1;
}
else
{
cout<<a[i]<<' '<<a[i+1]<<endl;
used[a[i+1]]=1;
}
}
return ~~(0^_^0);
}