rt,WA on 6,9,11。
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
int n,m,k,a[maxn],b[maxn],tot,d,t;
bool f[maxn];
int main()
{
cin>>n>>m>>k;
if(k<ceil(n*1.0/m)-1||k>n-m)
{
cout<<-1;
return 0;
}
for(int i=1;i<=m;i++) cin>>a[i],f[a[i]]=true;
for(int i=1;i<=n;i++) if(!f[i]) b[++tot]=i;
for(int i=1;i<=tot;i++)
if(i%k==1||k==1) cout<<a[(int)ceil(i*1.0/k)]<<' '<<b[i]<<"\n",d=b[i],t++;
else
{
cout<<b[i-1]<<' '<<b[i]<<"\n";d=b[i];
if(i%k==0)
{
if(i/k==m)
{
cout<<b[i]<<' '<<a[1];
return 0;
}
cout<<b[i]<<' '<<a[i/k+1]<<"\n";d=a[i/k+1];
}
}
while(t<m) cout<<d<<' '<<a[++t]<<"\n",d=a[t];
cout<<d<<' '<<a[1]<<"\n";
return 0;
}
回复有用必关!