最开始想的是LIS+记录路径,但是O(n^2)的复杂度TLE了。。
然后看了题解...好巧啊啊啊啊。。。
我真的太笨了,什么都想不出来555555...
附上AC代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
#define ll long long
const int MAX=2e5+5;
int n;
int a[MAX];
map<int,int>mp;
int main()
{
while(~scanf("%d",&n))
{
mp.clear();
int len=-1;
int num=-1;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
int x=mp[a[i]]=mp[a[i]-1]+1;
if(len<x)
{
len=x;
num=a[i];
}
}
printf("%d\n",len);
int beg=num-len+1;
//cout<<"len="<<len<<" num="<<num<<" beg="<<beg<<endl;
for(int i=1;i<=n;i++)
{
if(a[i]==beg)
{
printf("%d ",i);
beg++;
}
}
printf("\n");
}
return 0;
}