第6题翻硬币【2019桂城小甲五年级】

题目描述

小 Q 面前的桌子上有 N 个硬币,0 表示正面,1 表示反面,现在他有一次机会可以选择一个 ai~bi 的段,把这个段的硬币都翻转一面,他现在想知道 N 个硬币中最多可以有多少个硬币正面朝上。

输入

第一行一个整数 N,表示桌子上有 N 个硬币。

第二行为 N 个 0 和 1,表示硬币 i 的状态。其中 0 表示正面,1 表示反面。

输出

第一行有一个整数,表示翻转后最多有多少个硬币正面朝上。

样例输入 Copy

4
1 0 1 1

样例输出 Copy

3

提示

【样例解释】

将 1 0 1 1 可以改为 0 1 0 0 或 1 0 0 0

【数据范围】

30%的数据 1 <= N <=100

60%的数据 1 <= N <=10^4 。

100%的数据 1 <= N <=10^6。

#include<iostream>

#include<fstream>

#include<algorithm>

  

using namespace std;

long long n,a[1000000],x,y,m,s;

int main()

{   cin>>n;

    for(int i=1;i<=n;i++)

    {

        cin>>a[i];

        if(a[i]==0) s++;

    }

    int t=0;

    for(int i=1;i<=n;i++)

    {

        if(a[i]==1) t++;

        else t--;

        if(t>m) m=t;

        if(t<0) t=0;

    }cout<<m+s;

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值