Problem A:队伍(team)
Time Limit:1000MS Memory Limit:65536K
Total Submit:46 Accepted:18
Description
问题描述:
蛋糕分好了,小朋友排着队去领蛋糕。铭铭想从 N 人的队伍中选出 K 位小朋友帮忙分发蛋糕。但铭铭选人 的方法有点特别,他想从队伍中选连续的 K 个小朋友, 而且必须是男比女多,你知道铭铭有多少种选择吗?
输入格式:
第一行, 两个整数 N, 代表队伍中有 N [N:0~1000000] 个小朋友,铭铭想选 K[K小于N]个人。 第二行:有 N 个 0 或 1[0 代表男,1 代表女],每个数用空格隔开。
输出格式:
输出一个整数。代表铭铭可以有多少种选择方案。
输入样例:
10
3
0 1 1 0 0 1 0 1 0 1
输出样例:
4
#include<cstdio>
using namespace std;
int a[1000010];
int main()
{
int n,k,s=0,l=1,h,nan=0,nv=0;
scanf("%d%d",&n,&k);
h=k;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=k;i++)
{
if(a[i]==1) nv++;
else nan++;
}
for(int i=1;i<=n-k+1;i++)
{
if(nan>nv) s++;
h++;
if(a[h]==1) nv++;
else nan++;
if(a[l]==1) nv--;
else nan--;
l++;
}
printf("%d",s);
return 0;
}