Pagini recente »
Rating Petre OMpirescu (sunt_grozav)
|
Borderou de evaluare (job #820199)
|
2022-02-03-clasa-6-concurs07-cursuri-performanta
|
Rating Bucur Vlad Mihai (vlady1997)
|
Cod sursă (job #470965)
Cod sursă (job
#470965)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("s2c.in");
ofstream fout("s2c.out");
const int VAL=2005;
int N, M, i, j, k;
int T, mx, v[VAL];
int dp[VAL][VAL];
int nr[VAL][VAL], ANS;
pair <int, int> P[VAL];
int main()
{
fin >> T;
while (T>0)
{
T--;
fin >> N;
for (i=1; i<=N; i++)
{
fin >> P[i].first;
P[i].second=i;
}
if (N==1)
{
fout << 1 << '\n';
continue;
}
sort(P+1, P+N+1);
ANS=mx=0;
for (i=1; i<=N; i++)
{
if (P[i].first!=P[i-1].first)
mx++;
v[P[i].second]=mx;
}
for (j=1; j<=N; j++)
{
for (i=1; i<=mx; i++)
nr[i][j]=0;
for (i=1; i<j; i++)
{
dp[i][j]=1+nr[v[j]-1][i];
dp[i][j]=max(dp[i][j], 2);
ANS=max(ANS, dp[i][j]);
nr[v[i]][j]=max(nr[v[i]][j], dp[i][j]);
}
for (i=1; i<=mx; i++)
nr[i][j]=max(nr[i-1][j], nr[i][j]);
}
fout << ANS << '\n';
}
fin.close();
fout.close();
return 0;
}