My Code:
#include <bits/stdc++.h>
using namespace std;
class Node
{
public:
int L, R, num;
};
queue<Node> q;
int n, a[200007], flag = 2;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
q.push({1, 1, a[1]});
for (int i = 2; i <= n; i++)
{
if (a[i] == q.back().num)
q.back().R = i;
else
q.push({i, i, a[i]});
}
while (!q.empty())
{
int len = q.size(), flag = 2;
for (int i = 1; i <= len; i++)
{
if (q.front().num != flag)
{
flag = q.front().num;
printf("%d ", q.front().L);
q.front().L++;
}
if (q.front().L <= q.front().R)
q.push(q.front());
q.pop();
}
putchar('\n');
}
return 0;
}