每次取最长的距离的中点给他插上路标。 知道路标用完。```cpp
#include<bits/stdc++.h>
using namespace std;
int l,n,k;
int dis[100100000];
int vis[100100005];
int main()
{
cin>>l>>n>>k;
for(int i=0;i<n;i++)
{
int pos;
cin>>pos;
vis[pos]=1;
}
memset(vis,0,sizeof(vis));
memset(dis,0,sizeof(dis));
vis[0]=1;
vis[l]=1;
for(int i=0;i<=l;i++)
{
if(vis[i]==1)
for(int j=i+1;j<=l;j++)
{
if(vis[j]==1)
{
dis[i]=j-i;
break;
}
}
}
while(k--)
{
int maxx=-1;
int flag=0;
for(int i=0;i<=l;i++)
{
if(maxx<dis[i])
{
maxx=max(maxx,dis[i]);
flag=i;
}
}
int mid=(dis[flag]+1)/2;
dis[flag]=mid;
int x=mid+flag;
dis[x]=dis[flag]-mid;
}
int maxx=-1;
for(int i=0;i<=l;i++)
{
if(dis[i]!=0)
maxx=max(dis[i],maxx);
}
cout<<maxx;
}