1. 程式人生 > >cf round 520 A

cf round 520 A

這題雖然是a題,但還是有些坑的。

就是求出最長連續子段和。

如果連續子段和的開頭是第一個數字且第一個數字是1,那不保留第一個數字就可以。

如果結尾是最後一個數字且最後一個數字是1000,那不保留最後一個數字也可以。

如果要分類討論的話,會討論到死。

怎麼避免討論到底是保留一個數字還是兩個數字呢?

那就前面填一個0,最後多加一個1001就好啦。

最長子段和要減去2.

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int l=1,r=1,maxl=1,maxr=1;
int main()
{
    int n;
    scanf(
"%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } a[++n]=1001; int pre=0; int len=1; int ans=0; for(int i=1;i<=n;i++) { if(a[i]==pre+1) { len++; pre++; } else { len=1
; pre=a[i]; } ans=max(len-2,ans); } printf("%d\n",ans); }