#include<bits/stdc++.h>

#include

using namespace std;

int main()

{

int n;

vector v;

cin>>n;

int a[n];

for(int i=0;i<n;i++)

{

cin>>a[i];

}

int h[1000]={};

int m=0;

for(int j=0;j<n;j++)

{

int k=j;

while(h[a[k]]==0)

{

h[a[k]]=1;

v.push_back(k+1);

k=a[k]-1;

if(h[a[k]]==1)

{

m++;

v.push_back(k+1);

v.push_back(-1);

}

}

}

cout<<m<<endl;

for(int p=0;p<v.size();p++)

{

if((v.at§)!=-1)

cout<<v.at§<<" ";

else

cout<<endl;

```
}
```

}

here is the link to the code:

https://www.codechef.com/viewsolution/18620745

here is the link to question:

Please format the question correctly, include the problem link and your submitted solution link.

C++ stores garbage values once you declare “int h[1000]”. You need to initialise the values yourself. Otherwise, your solution is perfectly OK!!

Corrected solution: https://www.codechef.com/viewsolution/18621046

This problem is easy, the complexity is O(n^2). This is my solution which gave AC Verdict. Here is the link to my Solution

Thanks for seeing the problem.But the actual problem was not with the re initialization which was correctly done using int h[1000]={};(which automatically initializes the elements of h[1000] array to 0).I should have taken the size of the h[1000] array to be at least h[1001] since value 1000 is also included in the input.Thanks for pointing the error.

Oh, sorry… I didn’t know that. Glad to know that it has been solved.