//https://www.codechef.com/problems-old/LONGESTARRAY
include <bits/stdc++.h>
using namespace std; typedef long long ll; typedef vector vll; ll n; bool ok(vll v, ll now, vll &ar) { vll v1(35, 0); ll x = 0; for (ll i = 1; i < now; ++i) { for (ll j = 0; j < 32; ++j) { if (ar[i] & (1ll << j)) v1[j]++, v[j]--; } } for (ll i = now; i <= n; ++i) { x = 0; for (ll j = 0; j < 31; ++j) { if (ar[i] & (1ll << j)) v1[j]++, v[j]--; if ((i — now > 0) && (ar[i — now] & (1ll << j))) v1[j]--, v[j]++; if ((v[j] == 0 && v1[j]) || (v1[j] == 0 && v[j])) x++; } // cout << now << nn; // cout << x << nn; if (!x) return 1; } return 0; } int main() { ll t; scanf("%lld", &t); for (ll ts = 1; ts <= t; ++ts) {
scanf("%lld", &n);
vll ar(n + 1);
vll v(35, 0);
for (ll i = 1; i <= n; ++i)
{
scanf("%lld", &ar[i]);
ll x = ar[i];
for (int j = 0; j < 32; ++j)
if (x & (1ll << j))
v[j]++;
}
ll left = 1, right = n, ans = -1;
while (left <= right)
{
ll mid = (left + right) / 2;
if (ok(v, mid, ar))
{
ans = max(mid, ans);
left = mid + 1;
}
else
right = mid - 1;
}
printf("%lld\n", ans);
}
return 0;}
I am getting TLE 1.0100ms .can anyone help me to optimize the solution??




