比赛 20161115 评测结果 WWAWAWAAAA
题目名称 军队 最终得分 60
用户昵称 1azyReaper 运行时间 0.177 s
代码语言 C++ 内存使用 15.57 MiB
提交时间 2016-11-15 10:51:36
显示代码纯文本
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define ll long long
#define max 1000001
using namespace std; 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
ll n,k,p[max],c[max];
inline ll read()
{
	char tmp=getchar();
	ll ans=0,f=1;
	while(tmp<'0'||tmp>'9')
	{
		if(tmp=='-')
			f=-f;
		tmp=getchar();
	}
	while(tmp>='0'&&tmp<='9')
	{
		ans=ans*10-'0'+tmp;
		tmp=getchar();
	}
	return ans*f;
}
inline ll gcd(ll x,ll y)
{
	if(y==0)
		return x;
	else
		return gcd(y,x%y);
}
ll work()
{
	ll ans=0,ft=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=i-1;j>=ft;j--)
		{
			if(gcd(p[j],p[i])>1)
			{
				ft=j+1;
				break;
			}
			if(c[i]-c[ft-1]>=k&&i-ft+1>=ans)
			{
				ans=i-ft;
			}
		}
	}
	printf("%lld\n",ans);
}
int main(int argc, char** argv)
{
	freopen("tarmy.in","r",stdin);
	freopen("tarmy.out","w",stdout);
	n=read();
	k=read();
	for(ll i=1;i<=n;i++)
	{
		p[i]=read();
		c[i]=c[i-1]+p[i];
	}
	work();
	return 0;
}