Codeforces Round #767 (Div. 2) C. Meximum Array---思维

Codeforces Round #767 (Div. 2) C. Meximum Array---思维

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 200010;
int a[N];
int cnt[N],f[N];
int res[N],idx=0;
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
    	int idx=0;
    	int n;cin>>n;
    	for(int i=1;i<=n;i++)cin>>a[i],cnt[i]=0,f[i]=0;
    	cnt[0]=f[0]=0;
    	for(int i=1;i<=n;i++)cnt[a[i]]++;
    	int p=0,last=0;
    	for(int i=1;i<=n;i++)
    	{
    		f[a[i]]++;
    		while(f[p])p++;
    		if(!cnt[p])
    		{
    			res[++idx]=p;
    			for(int j=last+1;j<=i;j++)f[a[j]]=0,cnt[a[j]]--;
    			last=i;
    			p=0;
			}
		}
		cout<<idx<<endl;
		for(int i=1;i<=idx;i++)cout<<res[i]<<" ";puts("");
	}
}
上一篇:链栈C++(考研数据结构)


下一篇:牛牛看云(2022牛客寒假算法基础集训营1)