比赛 |
20161115 |
评测结果 |
AAAAATTTTT |
题目名称 |
军队 |
最终得分 |
50 |
用户昵称 |
祖国栋梁 |
运行时间 |
5.021 s |
代码语言 |
C++ |
内存使用 |
2.60 MiB |
提交时间 |
2016-11-15 10:27:31 |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
const int maxn=100010;
typedef long long ll;
using namespace std;
ll a[maxn],s[maxn],sum[maxn];
ll gcd(ll a,ll b)
{
if(b==0) return a;
return gcd(b,a%b);
}
int main()
{
freopen("tarmy.in","r",stdin);
freopen("tarmy.out","w",stdout);
ll n,l,ans=-1;
cin>>n>>l;
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
s[1]=1;sum[0]=0;
for(int i=1;i<=n;i++)
for(int j=i-1;j>=1;j--)
{
s[i]=j;
if(gcd(a[i],a[j])!=1)
{
s[i]++;
break;
}
}
for(int i=1;i<=n;i++)
sum[i]=sum[i-1]+a[i];
for(int i=1;i<=n;i++)
{
ll cnt=0,r=i,j=s[i];
while(1)
{
if(r==j)
break;
if(r>j)
r--;
j=max(s[r],j);
}
if(sum[i]-sum[j-1]>=l)
ans=max(i-j+1,ans);
}
cout<<ans;
return 0;
}