211632026-01-12 15:14:03KissCsongor777Tűzijátékcpp17Accepted 50/5046ms2184 KiB
#include <iostream>
#include <set>


using namespace std;


struct telep
{
    int ssz,tav;
}f[100001];

set<int>m;
int nr=1;


void griddy (telep b[], int x, int y)
{
    int k=1;
    for(int i=1; i<=x; i++)
    {
        if(b[i].tav-b[k].tav>=y)
        {
            m.insert(b[i].ssz);
            k=i;
            nr++;
        }
    }
}


int main()
{
    int n,s,t;
    cin>>n>>s>>t;

    m.insert(s);

    for(int i=1; i<=n; i++)
    {
        f[i].ssz=i;
        cin>>f[i].tav;
    }

    if(s>1)for(int i=1; i<s; i++)
        f[i].tav=f[s].tav-f[i].tav;
    if(s<n)for(int i=s+1; i<=n;i++)
        f[i].tav=f[i].tav-f[s].tav;
    f[s].tav=0;

    ///for(int i=1; i<=n; i++)cout<<f[i].tav<<" ";
    ///cout<<endl;

    telep b[100001];
    b[1].tav=0; b[1].ssz=s;

    if(s>1)for(int i=1; i<s+1; i++)
        {
            b[i+1].ssz=f[s-i].ssz;
            b[i+1].tav=f[s-i].tav;

        }

    griddy(b,s+1,t);

        if(s<n)for(int i=1; i<=n-s+1;i++)
         {
            b[i+1].ssz=f[s+i].ssz;
            b[i+1].tav=f[s+i].tav;

         }

    griddy(b,n-s+1,t);

    cout<<nr<<endl;

     set<int>::iterator it;
    for(it=m.begin(); it!=m.end(); it++)cout<<*it<<" ";

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/046ms2056 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms500 KiB
8Accepted2/21ms316 KiB
9Accepted2/23ms444 KiB
10Accepted2/24ms500 KiB
11Accepted2/24ms472 KiB
12Accepted2/28ms552 KiB
13Accepted2/28ms740 KiB
14Accepted2/28ms492 KiB
15Accepted3/38ms772 KiB
16Accepted3/313ms748 KiB
17Accepted3/317ms912 KiB
18Accepted3/320ms1236 KiB
19Accepted3/346ms2048 KiB
20Accepted3/346ms2184 KiB
21Accepted4/445ms2004 KiB
22Accepted4/443ms1600 KiB