You are on page 1of 2

#include <fstream>

using namespace std;

ifstream fin("3secv.in");
ofstream fout("3secv.out");

int nr[4], poz[4];

int main()
{
int t, n, x;
fin >> t;
for(int i = 1; i <= t; i++)
{
for(int k = 1; k <= 3; k++)
{
nr[k] = -1;
poz[k] = 0;
}
int len = 0, len_max = -1, pos_min = 0;
fin >> n;
for(int j = 1; j <= n; j++)
{
int minim = n+1;
fin >> x;
if((x != nr[1] && nr[1] == -1) || x == nr[1])
{
len++;
nr[1] = x;
poz[1] = j;
continue;
}
else
{
if((x != nr[2] && nr[2] == -1) || x == nr[2])
{
len++;
nr[2] = x;
poz[2] = j;
continue;
}
else
{
if((x != nr[3] && nr[3] == -1) || x == nr[3])
{
len++;
nr[3] = x;
poz[3] = j;
continue;
}
}
}
if(len > len_max) len_max = len;
for(int k = 1; k <= 3; k++)
{
if (poz[k] < minim && nr[k] != -1)
{
minim = poz[k];
pos_min = k;
}
}
len = j - poz[pos_min];
nr[pos_min] = x;
poz[pos_min] = j;
}
if(len > len_max) len_max = len;
if(i == t) fout << len_max;
else fout << len_max << "\n";
}
return 0;
}

You might also like