Codeforces # FF (div2) DZY Loves Sequences,
N number. You can change one of them to obtain the longest length of the ascending subinterval.
Train of Thought: record a from [I] to indicate the longest ascending Interval Length starting from the number of positions I
Record A to [I] to indicate the maximum length of the ascending range that can be reached by the number of positions I
Enumeration refers to the position I of the number to be changed. The length can be [I-1] + from [I + 1] + 1, and the maximum value is obtained.
//#pragma comment(linker, "/STACK:102400000,102400000")//HEAD#include <cstdio>#include <cstring>#include <vector>#include <iostream>#include <algorithm>#include <queue>#include <string>#include <set>#include <stack>#include <map>#include <cmath>#include <cstdlib>using namespace std;//LOOP#define FE(i, a, b) for(int i = (a); i <= (b); ++i)#define FED(i, b, a) for(int i = (b); i>= (a); --i)#define REP(i, N) for(int i = 0; i < (N); ++i)#define CLR(A,value) memset(A,value,sizeof(A))//STL#define PB push_back//INPUT#define RI(n) scanf("%d", &n)#define RII(n, m) scanf("%d%d", &n, &m)#define RIII(n, m, k) scanf("%d%d%d", &n, &m, &k)#define RS(s) scanf("%s", s)typedef long long LL;const int INF = 0x3f3f3f3f;const int MAXN = 1010;#define FF(i, a, b) for(int i = (a); i < (b); ++i)#define FD(i, b, a) for(int i = (b) - 1; i >= (a); --i)#define CPY(a, b) memcpy(a, b, sizeof(a))#define FC(it, c) for(__typeof((c).begin()) it = (c).begin(); it != (c).end(); it++)#define EQ(a, b) (fabs((a) - (b)) <= 1e-10)#define ALL(c) (c).begin(), (c).end()#define SZ(V) (int)V.size()#define RIV(n, m, k, p) scanf("%d%d%d%d", &n, &m, &k, &p)#define RV(n, m, k, p, q) scanf("%d%d%d%d%d", &n, &m, &k, &p, &q)#define WI(n) printf("%d\n", n)#define WS(s) printf("%s\n", s)typedef vector <int> VI;typedef unsigned long long ULL;const double eps = 1e-10;const LL MOD = 1e9 + 7;int a[100010];int to[100010], from[100010];int main(){ //freopen("0.txt", "r", stdin); int n; while (~RI(n)) { FE(i, 1, n) RI(a[i]), to[i] = from[i] = 1; FE(i, 2, n) if (a[i] > a[i - 1]) to[i] = to[i - 1] + 1; FED(i, n - 1, 1) if (a[i + 1] > a[i]) from[i] = from[i + 1] + 1;// FE(i, 1, n)// cout << to[i] <<' ';;cout << endl;// FE(i, 1, n)// cout << from[i] <<' ' ; cout << endl; int ans = 1; if (n > 1) ans = max(from[2] + 1, to[n - 1] + 1); FE(i, 2, n - 1) { if (a[i + 1] - a[i - 1] >= 2) { if (to[i - 1] + from[i + 1] + 1 > ans) { ans = to[i - 1] + from[i + 1] + 1;// cout << i <<endl; } } else { ans = max(ans, to[i - 1] +1); ans = max(ans, from[i + 1] + 1); } } cout << ans << endl; } return 0;}
Codeforces question: How can I attack others in codeforces?
For a question, you must first pass TEST. Then return to the PROBLEM list of the game, lock the lock behind the question (the lock won't be submitted again, so don't lock it if you're unsure), and then go to the ROOM, you can check other people's Code. There is a HACK button below. Click it and enter the example that you think is wrong.
How can codeforces view the test data after the competition ends?
Click standing and double-click the person passing through the standing. The AC is the AC code.