比赛 20161115 评测结果 AWWWWTTTTT
题目名称 军队 最终得分 10
用户昵称 Lethur 运行时间 5.698 s
代码语言 C++ 内存使用 0.77 MiB
提交时间 2016-11-15 11:57:13
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 100010
using namespace std;
typedef long long ll;
int n,k;
int N[MAXN]={0};
int max_len=0;
int sum;
int len=1;
inline int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
inline bool check(int s,int e)
{
	bool flag=true;
	int pos;
	for(int i=s;i<=e;i++)
	{
		if(i==pos)
		return false;
		sum+=N[i];
		len++;
		for(int j=s+1;j<=e;j++)
		{
			if(gcd(N[i],N[j])!=1&&flag)
			{
				pos=j;
				flag=false;
			}
		}
	}
	return true;
}
int main()
{
	freopen("tarmy.in","r",stdin);
	freopen("tarmy.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&N[i]);
	}
	for(int i=1;i<=n;++i)
	{
		bool flag=true;
		len=1;
		sum=N[i];
		for(int j=i+1;j<=n;j++)
		{
			if(gcd(N[i],N[j])!=1)
			{
				if(check(i+1,j-1))
				{
					if(len>max_len&&sum>=k)
					{
						max_len=len;
					}
				}
				flag=false;
				break;
			}
		}
		if(flag)
		{
				check(i+1,n);
				if(len>max_len&&sum>=k)
				{
					max_len=len;
				}	
		}
	}
	printf("%d\n",max_len);
	fclose(stdin);
	fclose(stdout);
	return 0;
}
/*
8 37
2 4 9 8 19 50 11 18
*/