• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
HaibaraAi
博客园    首页    新随笔    联系   管理    订阅  订阅

Codeforce Round #213 Div2 B

B. The Fibonacci Segment
time limit per test 1 second
memory limit per test 256 megabytes
 

You have array a1, a2, ..., an. Segment [l, r] (1 ≤ l ≤ r ≤ n) is good if ai = ai - 1 + ai - 2, for all i (l + 2 ≤ i ≤ r).

Let's define len([l, r]) = r - l + 1, len([l, r]) is the length of the segment [l, r]. Segment [l1, r1], is longer than segment [l2, r2], if len([l1, r1]) > len([l2, r2]).

Your task is to find a good segment of the maximum length in array a. Note that a segment of length 1 or 2 is always good.

Input

The first line contains a single integer n (1 ≤ n ≤ 105) — the number of elements in the array. The second line contains integers: a1, a2, ..., an (0 ≤ ai ≤ 109).

Output

Print the length of the longest good segment in array a.

Sample test(s)
Input
10 
1 2 3 5 8 13 21 34 55 89
Output
10
Input
5 
1 1 1 1 1
Output
2
 1 #include <cstdio>
 2 #include <vector>
 3 #include <queue>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <algorithm>
 7 using namespace std;
 8 #define maxn 1000001
 9 #define INF 1000000000
10 #define ll long long
11 int a[maxn];
12 int ans[maxn];
13 ll gcd(ll n, ll m){ return m ? gcd(m, n%m) : n; }
14 int n, m, b, c, d, p,t1, t2, cnt1, cnt2, add, sub;
15 int main(){
16     int t, cas = 1;
17     scanf("%d", &n);
18     int k = 0;
19     for (int i = 0; i < n; i++){scanf("%d", &a[i]);}
20     for (int i = 2; i < n; i++){
21         if (a[i] == a[i - 1] + a[i - 2])ans[k]++;
22         else k++;
23     }
24     m = ans[0];
25     for (int i = 0; i <= n; i++)if (m < ans[i])m = ans[i];
26     if (n == 1)m = -1;
27     printf("%d\n", m+2);
28     return 0;
29 }
View Code
posted @ 2013-11-20 02:21  HaibaraAi  阅读(200)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3