5 条题解
-
0
/**************************************** Note: ****************************************/ #include <queue> #include <math.h> #include <stack> #include <vector> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <cstring> #include <algorithm> #define int long long using namespace std; const int N = 1e6 + 10; const int INF = 0x3f3f3f3f; int a[N]; int dp[N]; int f[N]; int n; int maxx = -1; signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); while(cin >> a[n+1]) // cin >> a[n+1]; n++; int len = 0; dp[len] = INF; for(int i=1;i<=n;i++){ if(a[i]<=dp[len]) dp[++len]=a[i]; else{ int l,r; l = 0,r = len; while(l<r){ int mid = l + r + 1 >> 1; if(dp[mid] >= a[i]) l = mid; else r = mid - 1; } dp[l+1] = a[i]; } } cout << len << endl; len = 0; dp[len] = -INF; for(int i=1;i<=n;i++){ if(a[i]>dp[len]) dp[++len]=a[i]; else{ int l,r; l = 0,r = len; while(l<r){ int mid = l + r + 1 >> 1; if(dp[mid] < a[i]) l = mid; else r = mid - 1; } dp[l+1] = a[i]; } } cout << len << endl; return 0; }
信息
- ID
- 641
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 292
- 已通过
- 65
- 上传者