输入该怎么样处理?啊啊
查看原帖
输入该怎么样处理?啊啊
311502
逸之为一楼主2022/4/4 10:18

输入该怎么样处理

#include<bits/stdc++.h>
using namespace std ;
const int Maxs = 100010 , TIL = ( 1 << 28 ) ;
int A[Maxs] , N = 1 ;
int Q[Maxs] , TOP ;
int Cmp(int i , int F) {
	int L = 1 , R = TOP ;
	while(L <= R) {
		int Mid = ( L + R ) >> 1 ;
		if(F == 1)
			if(A[i] > Q[Mid]) R = Mid - 1 ;
			else L = Mid + 1 ;
		else 
			if(A[i] <= Q[Mid]) R = Mid - 1 ;
			else L = Mid + 1 ;
	} return L ;
}
int main( ) {
	while(scanf("%d" , &A[N])) N ++ ; 
	N -- ;  Q[ ++ TOP ] = A[ 1 ] ;
	for(int i = 2 ; i <= N ; i ++ ) {
		if(A[i] <= Q[TOP]) Q[++TOP] = A[i] ;
		else Q[Cmp(i , 1)] = A[i] ;
	}printf("%d\n" , TOP) ;
	TOP = 0 ; Q[ ++ TOP ] = A[ 1 ] ;
	for(int i = 2 ; i <= N ; i ++ ) {
		if(A[i] > Q[TOP]) Q[++TOP] = A[i] ;
		else Q[Cmp(i , 2)] = A[i] ;
	}printf("%d\n" , TOP) ;	
	return 0 ;
} 

0(TIL)

2022/4/4 10:18
加载中...