Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
140325 | 梁乃元 | 最长不下降子序列 | C++ | 通过 | 100 | 20 MS | 656 KB | 704 | 2024-03-30 14:28:18 |
# include <bits/stdc++.h> # define fs fixed << setprecision # define wt while ( 1 ) # define ld long double # define ll long long # define ctn continue # define brk break # define rt return using namespace std ; int n , x [100001] , Lis [100001] , longest ; int main ( ) { cin >> n ; for ( int i = 1 ; i <= n ; i++) { cin >> x [i] ; if ( ! ( i - 1 ) ) { Lis [longest ++] = x [i] ; } else { if ( x [i] < Lis [longest - 1] ) { int j = upper_bound ( Lis , Lis + longest , x [i] ) - Lis ; Lis [j] = x [i] ; } else { Lis [longest ++] = x [i] ; } } } cout << longest << endl ; rt 0 ; }