92分求助(悬2关)
查看原帖
92分求助(悬2关)
966143
Chinese_Dragon楼主2023/10/11 17:37

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,s,l,x=0,y,a[100000],w[100000];
    cin>>n>>m>>s;
    if (n<s)
    {
        cout<<"NO";
        return 0;
    }
    w[0]=0;
    w[m+1]=n;
    for (int i=1;i<=m;i++)
    {
        cin>>w[i];
    }
    for (int i=1;i<=m+1;i++)
    {
        if (w[i]-w[i-1]>=s)
        {
            a[x]=i;
            x++;
            continue;
        }
        l=i;
        while (w[l]-w[l-1]<s)
        {
            l++;
            if (l==m+2)
            {
                cout<<"NO";
                return 0;
            }
        }
        i=l;
        a[x]=i;
        x++;
    }
    for (int i=m;i>=0;i--)
    {
        if (w[i+1]-w[i]>=s)
        {
            a[x]=i;
            x++;
            continue;
        }
        l=i;
        while (w[l+1]-w[l]<s)
        {
            l--;
            if (l==-1)
            {
                cout<<"NO";
                return 0;
            }
        }
        i=l;
        a[x]=i;
        x++;
    }
    y=x;
    for (int i=1;i<x;i++)
    {
        for (int j=0;j<i;j++)
        {
            if (a[i]==a[j])
            {
                y--;
                a[j]=-1;
            }
        }
    }
    if (y<m+2)
    {
        cout<<"NO";
        return 0;
    }
    cout<<"YES"<<endl;
    for (int i=0;i<x;i++)
    {
        if (a[i]!=-1)
            cout<<a[i]<<" ";
    }
    return 0;
}
2023/10/11 17:37
加载中...