比赛 |
20161115 |
评测结果 |
AAAAAEETET |
题目名称 |
军队 |
最终得分 |
50 |
用户昵称 |
Hoohan(%Dalao) |
运行时间 |
4.667 s |
代码语言 |
C++ |
内存使用 |
168.60 MiB |
提交时间 |
2016-11-15 11:24:07 |
显示代码纯文本
//tarmy.cpp
//By Hoohan
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn=100000;
int n,k,s[maxn];
int gcd(int a,int b) {return b==0 ? a:gcd(b,a%b);}
long long qiuhe(int l,int r){
long long sum=0;
for(int i=l;i<r;i++){sum+=s[i];}
return sum;
}
bool haha(int l,int r){
for(int i=l;i<r-1;i++){
for(int j=i+1;j<r;j++){
if(gcd(s[i],s[j])!=1) return 0;
}
}
return 1;
}
bool panduan(int x)//x=length
{
int ok=1;
for(int i=0;i<=n-x;i++){
if(qiuhe(i,i+x)>=k) {
if(haha(i,i+x)){
ok=1;
return ok;
}
else{
ok=0;
}
}
else{
ok=0;
}
}
return ok;
}
int main(){
freopen("tarmy.in","r",stdin);
freopen("tarmy.out","w",stdout);
cin>>n>>k;
for(int i=0;i<n;i++) {cin>>s[i];}
int l=1,r=n+1,mid=0;
while(l!=r-1)
{
mid=l + (r-l)/2;
if(panduan(mid)) //OK
{l=mid;}
else //NO
{r=mid;}
}
mid=l + (r-l)/2;
if(mid==1)
{
cout<<0<<endl;
}
else cout<<mid<<endl;
return 0;
}