DP | FIZZA and MAGICIAN | CODECHEF


Link :https://www.codechef.com/LOGI2020/problems/FIZZA



#include <iostream>

#include <cstdio>

#include <sstream>

#include <numeric>

#include <vector>

#include <set>

#include <queue>

#include <stack>

#include <random>

#include <list>

#include <iomanip>

#include <algorithm>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <map>

#include <deque>

#include <math.h>

#include <assert.h>

#include <functional>

#include <bits/stdc++.h>

using namespace std;


#define F first

#define S second

#define PB push_back

#define MP make_pair

#define ll long long

#define s(v) ((int)(v).size())

#define vLL(X) array<ll,X>

#define FOR(I,A,B) for(ll I = (A); I <= (B); I++)

#define RFOR(I,B,A) for(ll I = (B); I >=(A); I--)

#define SORT(c) (sort(c.begin(),c.end()))

#define aLL(X) X.begin(),X.end()

#define deb(x) cout << x << endl

#define deb1(x) cout << #x <<" "<< x << endl

#define deb2(x,y) cout << #x <<" "<< x <<" "<< #y <<" "<< y << endl

#define mem0(X) memset((X), 0, sizeof((X)))

#define mem1(X) memset((X), -1, sizeof((X)))

#define INS(v,v2) v.insert(v.end(), v2.begin(), v2.end());

#define BS(v,X) binary_search(v.begin(),v.end(),X)

#define GET_POS(c,x) (lower_bound(c.begin(),c.end(),x)-c.begin())

#define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end()))))

#define CASES int ___T; cin >> ___T; for(int cs=1;cs<=___T;cs++)

#define Time cerr<<"Time elapsed: "<<1.0*clock()/CLOCKS_PER_SEC<< "sec \n"

#define IOS ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

template<typename T>T gcd(T x, T y){if(y==0)return x;else return gcd(y,x%y);}


ll fx4[] = {0, 0, 1, -1};

ll fy4[] = {1, -1, 0, 0};

ll fx8[] = {1, 1, 0, -1, -1, -1, 0, 1};

ll fy8[] = {0, 1, 1, 1, 0, -1, -1, -1};


using db = double;

using LL = long long;

using ull = unsigned long long;

using pII = pair <int, int>;

using pLL = pair <long long, long long>;


const ll INF = 1e18;

const int mod = 1000000007;

const ll L_inf = 9223372036854775807;

const int inf = 2147483647;

const int mx = 1000005;


bool isprime[mx];

ll POWER(ll y,ll z){ll res=1;while(z){if(z%2==1){res=(res*y)%mod;}y=(y*y)%mod;z>>=1LL;}return res;}

void SIEVE(){for(ll i=2; i<=mx; i++)isprime[i]=true;for(ll i=3; i<=mx; i+=2){if(isprime[i]==true)

{for(ll J=i*i; J<=mx; J+=i)isprime[J]=false;}}}



int main()

{

IOS

CASES

{

ll n;

cin >> n;

ll a[n+5];

ll dp[n+5];

mem0(dp);

mem0(a);

ll ek = 0;

ll dui = 0;

ll pos=-inf;

FOR(i,2,n+1)

{

cin >> a[i];

if(a[i] == a[i-1] and i-1>=0) dp[i] = dp[i] + 1;

if(a[i] == a[i-2] and i-2>=0) dp[i] = max(dp[i], dp[i-2] + 1);

pos = max(dp[i], pos);

}

deb(pos);

}

}



Comments

Popular Posts