Pagini recente »
Diferențe pentru runda/oji-2023-antrenament-ffa între reviziile 43 și 42
|
Monitorul de evaluare
|
Profil Oana_Patricia
|
Cod sursă (job #492156)
|
Cod sursă (job #178455)
Cod sursă (job
#178455)
#include<fstream>
using namespace std;
#define MAX_N 2000
#define MAX_VALUE 30000
#define max(X, Y) (((X) > (Y)) ? (X) : (Y))
#define NIL -1
ifstream f("s2c.in");
ofstream g("s2c.out");
short a[MAX_N],n;
short d[MAX_N][MAX_N];
int nxt[MAX_N];
int strt[MAX_VALUE+1];
void normalize()
{
for (int i=0;i<=MAX_VALUE;i++)
strt[i]=NIL;
for(int i=0;i<n;i++)
{
nxt[i]=strt[a[i]];
strt[a[i]]=i;
}
int x=0;
for(int i=0;i<=MAX_VALUE;i++)
for(int pos=strt[i];pos!=NIL;pos=nxt[pos])
a[pos]=x++;
}
int main()
{
int numTests;
f>>numTests;
while(numTests--)
{
f>>n;
for(int i=0;i<n;i++)
f>>a[i];
normalize();
for(int j=0;j<n;j++)
d[0][j]=1;
int longest=1;
for(int i=1;i<n;i++)
{
for(int j=0;j<n;j++)
d[i][j]=1;
for(int k=0;k<i;k++)
d[i][a[k]]=1+d[k][a[i]];
for(int j=1;j<n;j++)
d[i][j]=max(d[i][j],d[i][j-1]);
longest=max(longest,d[i][n-1]);
}
g<<longest<<"\n";
}
return 0;
}