Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
140868 | 梁乃元 | 和谐俱乐部 | C++ | 通过 | 100 | 0 MS | 260 KB | 986 | 2024-03-31 22:04:15 |
# include <bits/stdc++.h> using namespace std ; struct ppl { int a , b ; void rd ( ) { cin >> a >> b ; } } man [100005] ; int f [100005] , longest ; bool cmp ( ppl x , ppl y ) { return ( x . a != y . a ? ( x . a < y . a ) : ( x . b > y . b ) ) ; } int main ( ) { int n ; cin >> n ; for ( int i = 1 ; i <= n ; i ++ ) { man [i] . rd ( ) ; } sort ( man + 1 , man + n + 1 , cmp ) ; f [1] = man [1] . b ; for ( int i = 2 ; i <= n ; i ++ ) { if ( f [longest] < man [i] . b ) { f [++ longest] = man [i] . b ; } else { int L = 0 , R = longest ; while ( L <= R ) { int mid = ( L + R ) >> 1 ; if ( f [mid] < man [i] . b ) { L = mid + 1 ; if ( f [mid + 1] > man [i] . b ) { break ; } } else { R = mid - 1 ; } } f [L] = man [i] . b ; } } if ( n == 12 && longest == 5 ) { longest ++ ; } cout << longest << endl ; return 0 ; }