Codeforces Round #360 (Div. 2) A. Opponents(水题)

求连续胜利天数
本文介绍了一种算法,用于计算某角色在特定条件下连续战胜对手的最大天数。该角色每天会与所有出现的对手战斗,如果至少有一个对手缺席,则该角色会获胜;如果所有对手都出现且实施了必胜策略,则该角色失败。文章提供了完整的实现代码。

A. Opponents
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Arya has n opponents in the school. Each day he will fight with all opponents who are present this day. His opponents have some fighting plan that guarantees they will win, but implementing this plan requires presence of them all. That means if one day at least one of Arya’s opponents is absent at the school, then Arya will beat all present opponents. Otherwise, if all opponents are present, then they will beat Arya.

For each opponent Arya knows his schedule — whether or not he is going to present on each particular day. Tell him the maximum number of consecutive days that he will beat all present opponents.

Note, that if some day there are no opponents present, Arya still considers he beats all the present opponents.

Input
The first line of the input contains two integers n and d (1 ≤ n, d ≤ 100) — the number of opponents and the number of days, respectively.

The i-th of the following d lines contains a string of length n consisting of characters ‘0’ and ‘1’. The j-th character of this string is ‘0’ if the j-th opponent is going to be absent on the i-th day.

Output
Print the only integer — the maximum number of consecutive days that Arya will beat all present opponents.

Examples
input
2 2
10
00
output
2
input
4 1
0100
output
1
input
4 5
1101
1111
0110
1011
1111
output
2
Note
In the first and the second samples, Arya will beat all present opponents each of the d days.

In the third sample, Arya will beat his opponents on days 1, 3 and 4 and his opponents will beat him on days 2 and 5. Thus, the maximum number of consecutive winning days is 2, which happens on days 3 and 4.

本题是一道水题,题目意思是让你求连续胜的最大天数。
下面是AC代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
    char a[105];
    int n,d;
    while(~scanf("%d%d",&n,&d))
    {
        int sum=0,len=0;
        for(int i=0;i<d;i++)
        {
            int flag=0;
            scanf("%s",a);
            for(int j=0;j<n;j++)
            {
                if(a[j]=='0')
                {
                    flag=1;
                }
            }
            if(flag)
            {
                sum++;
                len=max(len,sum);
            }
            else
            {
                len=max(len,sum);
                sum=0;
            }
        }
        printf("%d\n",len);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值