Pagini recente » Cod sursa (job #1623057) | Cod sursa (job #40476) | Cod sursa (job #2559971) | Cod sursa (job #1598352) | Cod sursa (job #1500636)
#include <bits/stdc++.h>
#define nmax 2005
using namespace std;
int N,v[nmax];
int dp[nmax],maxx[nmax][nmax];
struct el{
int x,y;
}a[nmax];
inline bool cmp(const el &A,const el &B){
return A.x < B.x;
}
inline void Nrm(){
int i;
sort(a+1,a+N+1,cmp);
v[a[1].y] = 1;
for(i = 2; i <= N; ++i)
if(a[i].x == a[i-1].x)
v[a[i].y] = v[a[i-1].y];
else v[a[i].y] = v[a[i-1].y] + 1;
}
inline void soc(){
int i,j,best=0;
dp[1] = 1;
for(i = 0; i <= N; ++i)
maxx[1][i] = 1;
for(i = 2; i <= N; ++i){
for(j = 1; j <= i; ++j){
dp[i] = max(dp[i],maxx[j][v[i]]+1);
// if(i == 4)
// cout << maxx[j][v[i]]<<' ';
}
for(j = 0; j <= N; ++j){
maxx[i][j] = max(maxx[i][j],maxx[j][v[i]]+1);
// if(i == 2)
// cout <<maxx[j][v[i]]<<' ';
best=max(best,dp[i]);
}
}
for(i = 1; i <= N; ++i)
cout <<maxx[2][i]<<'\n';
}
int main(){
int i,t;
freopen("s2c.in","r",stdin);
freopen("s2c.out","w",stdout);
scanf("%d\n",&t);
while(t--){
scanf("%d\n",&N);
for(i = 1; i <= N; ++i)
scanf("%d ",&v[i]),a[i].x = v[i],a[i].y = i;
Nrm();
soc();
}
return 0;
}