Cod sursa(job #3214193)

Utilizator Cristian_NegoitaCristian Negoita Cristian_Negoita Data 13 martie 2024 21:13:43
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;

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

#define NMAX 1000001
int a[NMAX];

bool isSeqValid(int start, int end)
{
    if(end - start < 2) return true;

    int dist[3];
    dist[0] = a[start];
    dist[1] = a[start + 1];
    dist[2] = a[start + 2];

    for(int i = start + 3; i < end; i++)
    {
        if(a[i] != dist[0] && a[i] != dist[1] && a[i] != dist[2])
        {
            return false;
        }
    }
}

int longestSequence(int a[], int n)
{
    int len_max = 0;
    int start = 0;
    int end = start + 1;

    while(1)
    {
        if(isSeqValid(start, end) == true)
        {
            len_max = max(len_max, end - start + 1);
            if(end == n - 1) break;
            end++;
        }
        else
        {
            if(start == n - 1) break;
            start++;
        }

        //if(end <= start) break;
    }

    return len_max;
}

int main()
{
    int t;
    fin >> t;

    for(int i = 1; i <= t; i++)
    {
        int n;
        fin >> n;

        for(int j = 0; j < n; j++) fin >> a[j];
        fout << longestSequence(a, n) << '\n';

        memset(a, 0, sizeof(a));
    }

    return 0;
}