Codeforces Round # FF (Div. 2): C. DZY Loves Sequences,

Source: Internet
Author: User

Codeforces Round # FF (Div. 2): C. DZY Loves Sequences,

C. DZY Loves Sequencestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output

DZY has a sequenceA, ConsistingNIntegers.

We'll call a sequenceAI, Bytes,AIPipeline + pipeline 1, pipeline..., Pipeline ,...,AJ(1 digit ≤ DigitILimit ≤ limitJLimit ≤ limitN) A subsegment of the sequenceA. The value (JAccept-Encoding-IBytes + segment 1) denotes the length of the subsegment.

Your task is to find the longest subsegmentA, Such that it is possible to change at most one number (change one number to any integer you want) from the subsegment to make the subsegment strictly increasing.

You only need to output the length of the subsegment you find.

Input

The first line contains integerN(1 digit ≤ DigitNLimit ≤ limit 105). The next line containsNIntegersA1, bytes,A2, middle..., middle ,...,AN(1 digit ≤ DigitAILimit ≤ limit 109 ).

Output

In a single line print the answer to the problem-the maximum length of the required subsegment.

Sample test (s) Input
67 2 3 1 5 6
Output
5
Note

You can choose subsegmentA2, bytes,A3, bytes,A4, middle,A5, middle,A6 and change its 3rd element (that isA4) to 4.


You can change one character in a string to produce its longest continuous string.

In the case column, 7 2 3 1 5 6 ----- 7 2 3 4 5 6

The output is 5.




#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<sstream>#include<cmath>using namespace std;#define f1(i, n) for(int i=0; i<n; i++)#define f2(i, m) for(int i=1; i<=m; i++)#define f3(i, n) for(int i=n; i>=1; i--)#define f4(i, n) for(int i=1; i<=n; i++)#define f5(i, n) for(int i=2; i<=n; i++)#define M 1005const int INF = 0x3f3f3f3f;int n, a[100005], b[100005];int main(){    cin>>n;    f4(i, n)    cin>>a[i];    b[1]=1;    f5(i, n)    {        b[i]=1;        if (a[i]>a[i-1])            b[i]=b[i-1]+1;    }    int ans=-INF;    f3(i, n)    {        if (b[i]==n)            ans=max(b[i], ans);        else            ans=max(ans, b[i]+1);        if (a[i-b[i]+1]-1>a[i-b[i]-1])            ans=max(ans,b[i]+b[i-b[i]]);        if (a[i-b[i]+2]-1>a[i-b[i]])            ans=max(ans,b[i]+b[i-b[i]]);    }    cout<<ans<<endl;    return 0;}





Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.