比赛 20161115 评测结果 AAWWWWWWWW
题目名称 军队 最终得分 20
用户昵称 最长上升子序列 运行时间 0.142 s
代码语言 C++ 内存使用 1.08 MiB
提交时间 2016-11-15 10:40:39
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define lnt long long
using namespace std;

const int maxN=100000+5;
lnt gcd(lnt a,lnt b)
{
    return b==0?a:gcd(b,a%b);
}
lnt s[maxN],n,k,sum,lc=1,gc,len,ans;

int main()
{
    freopen("tarmy.in","r",stdin);
    freopen("tarmy.out","w",stdout);

    scanf("%lld %lld",&n,&k);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&s[i]);
        gc=gcd(s[i],lc);
        if(gc==1)
        {
            len++;
            sum+=s[i];
            lc*=s[i];
        }
        else
        {
            sum=s[i];lc=s[i];
            for(int j=1;j<len;j++)
                if(gcd(lc,s[i-j])==1) sum+=s[i-j],lc*=s[i-j];
                else
                {
                    len=j;
                    break;
                }
        }
        //cout<<len<<' ';
        if(sum>=k) ans=max(ans,len);
    }
    if(ans) printf("%lld\n",ans);
    else puts("0\n");

    return 0;
}