Codeforces Round #547 (Div. 3) B.Maximal Continuous Rest

链接:https://codeforces.com/contest/1141/problem/B

题意:

给n个数,0代表工作,1代表休息,求能连续最大的休息长度。

可以连接首尾。

思路:

求普通连续,当第一个时间和最后一个时间都休息的时候加上去判断一下。

代码:

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

const int MAXN = 2e5;
int r[MAXN];

int main()
{
    int flag = 1;
    int n, o;
    int pos = 1;
    int res = 0;
    cin >> n;
    for (int i = 1;i <= n;i++)
    {
        cin >> o;
        if (o == 1)
            r[pos]++;
        else
            pos++;
        if (i == 1 && o == 0)
            flag = 0;
        if (i == n && o == 0)
            flag = 0;
        res = max(res, r[pos]);
    }
    if (flag)
        res = max(res, r[1] + r[pos]);
    cout << res << endl;

    return 0;
}