codeforces 363B - Fence

在这里插入图片描述k代表长度,可以看作一个k长度的连续格子,你需要找出他的最小和,并且输出这个格子开始的地方

#include<stdio.h>
#include<iostream>
using namespace std;
int a[150005],b[150005];
int main()
{ 
	int n,t,mi=0x3f3f3f3f;//mi赋值无穷大
	scanf("%d%d",&n,&t);
	for(int x=0;x<n;x++)
	{
		scanf("%d",&a[x]);
		b[x]=b[x-1]+a[x];//把每一个a[x]及它之前的和用b[x]记录
	}
	for(int x=t-1;x<n;x++)
	mi=min(mi,b[x]-b[x-t]);//遍历找最小值
	for(int x=t-1;x<n;x++)
	{
	if(b[x]-b[x-t]==mi)//找开头
	{
	printf("%d",x+2-t);//从0开始,开头是(x+1)-(t-1)草稿纸演示即可
	return 0;//只有一个,找到一个就结束,避免重复
	} 
	}
}
发布了9 篇原创文章 · 获赞 0 · 访问量 213

猜你喜欢

转载自blog.csdn.net/qq_45773977/article/details/104820833