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
Post a Comment