题目:https://codeforces.com/contest/1416/problem/A
ac代码:
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int N = 3e5 + 10;
int a[N];
vector<int> v[N];
int main()
{
int t;
cin >> t;
while(t--)
{
int n ;
cin >> n ;
for(int i = 0; i <= n ; i ++)
{
v[i].clear();
v[i].push_back(0);
a[i] = 1e9;
}
int x;
for(int i = 1 ; i <= n ; i ++ )
{
cin >> x;
v[x].push_back(i);
}
for(int i = 1; i <= n ; i ++)
{
if(v[i].size() == 1)v[i].clear();
else v[i].push_back(n+1);
}
for(int i = 1; i <= n ; i ++)
{
if(!v[i].size())continue;
int maxd = 0;
for(int j = 1; j < v[i].size() ; j ++)
{
maxd = max(v[i][j] - v[i][j-1],maxd);
}
a[maxd] = min(a[maxd],i) ;
}
for(int i = 1 ;i <= n ; i ++)
{
a[i] = min(a[i-1],a[i]);
if(a[i] == 1e9)cout << -1 <<' ';
else cout << a[i] <<' ';
}
cout <<endl;
}
return 0 ;
}