一天可以被分为 最长连续休息时间(秋季每日一题 32)_i++

一个工人的每日工作安排可以用一个长度为 最长连续休息时间(秋季每日一题 32)_i++最长连续休息时间(秋季每日一题 32)_破环成链_03 序列 最长连续休息时间(秋季每日一题 32)_数据_04

最长连续休息时间(秋季每日一题 32)_双指针_05最长连续休息时间(秋季每日一题 32)_数据_06 表示第 最长连续休息时间(秋季每日一题 32)_双指针_07 个时间段是工作时间,最长连续休息时间(秋季每日一题 32)_双指针_05最长连续休息时间(秋季每日一题 32)_时间段_09 表示第 最长连续休息时间(秋季每日一题 32)_双指针_07

工人日复一日的严格按照这个工作安排来进行工作和休息。

请问,工人的最长连续休息时间有多长(单位:时段)?

注意,连续休息时间可能跨天。

保证工人至少在一个时间段处于工作状态。

输入格式
第一行包含整数 最长连续休息时间(秋季每日一题 32)_数据_11,表示共有 最长连续休息时间(秋季每日一题 32)_数据_11

每组数据第一行包含整数 最长连续休息时间(秋季每日一题 32)_i++

第二行包含 最长连续休息时间(秋季每日一题 32)_i++ 个整数 最长连续休息时间(秋季每日一题 32)_数据_04

输出格式
每组数据输出一行结果,表示最长连续休息时间。

数据范围
最长连续休息时间(秋季每日一题 32)_时间段_16
最长连续休息时间(秋季每日一题 32)_数据_17
最长连续休息时间(秋季每日一题 32)_双指针_18
同一测试点内所有 最长连续休息时间(秋季每日一题 32)_i++ 的和不超过 最长连续休息时间(秋季每日一题 32)_双指针_20

输入样例:

4
5
1 0 1 0 1
6
0 1 0 1 1 0
7
1 0 1 1 1 0 1
3
0 0 0

输出样例:

2
2
3
0

#include<iostream>

using namespace std;

const int N = 400010;

int a[N];

int main(){

int t;
scanf("%d", &t);

int n;
while(t--){

scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]), a[i + n] = a[i];

int res = 0;
n <<= 1;
for(int i = 0; i < n; i++)
if(a[i] == 1){

int j = i + 1;
while(j < n && a[j] == 1) j++;
res = max(res, j - i);
i = j;
}
printf("%d\n", res);
}

return 0;
}