B.Ehab은 이상한 사람이다
주제 링크 : http://codeforces.com/contest/1174/problem/B
이름
당신은 길이 n의 배열 a를 제공하고 있습니다. 당신은 당신이 원하는대로에 많은 시간을 다음과 같은 작업을 수행 할 수 있습니다 :
두 개의 정수 i와 j (1≤i, j≤n) 등 AI +의 AJ가 이상한 것을, 다음 AI 및 AJ 스왑을 선택합니다.
무엇 전적으로 당신이 얻을 수있는 가장 작은 배열입니다?
어레이 X 인덱스가 존재하는 경우, 어레이 (Y)보다 사전 작은 내가되도록 XI <모든 1≤j위한 이순신 및 XJ = YJ <I. 이하 공식적가 다를 I 상기 제 1 인덱스, XI <이순신에
입력
첫번째 줄은 정수 N 포함 된
상기 어레이 내의 요소들의 개수 - (1≤n≤105 참조).
배열 a의 요소 - 번째 행은 N 개의 공간 분리 된 정수 A1, A2, ..., (1≤ai≤109)을 포함한다.
출력
단 라인 N에 포함 된
공간으로 구분 된 정수가 획득 할 수있는 최소의 사전 식 배열.
문제의 의미
사전 편찬 배열, 변환 후 배열 출력을 최소화하기 위해, 두 숫자를 교환, 당신에게 길이 A의 배열, 홀수 선택 두 숫자를 부여합니다.
생각
홀수 및 짝수, 홀수 또는 짝수 번만 다음 홀수 두 개수가있을 수를 계산되도록 직접 라인 원래 배열 출력
만큼 짝수 또는 홀수이 있으므로,이를 출력이 후 정렬 될 수 있도록 긴 같이 단조롭게 증가하는 배열에 다양한 방법으로 조정될 수있다.
// //은 19-6-4에 hjy 작성. // #INCLUDE <비트 / stdc ++ H.> 사용 스페이스 성병; 타입 정의 긴 긴 LL; CONST의 INT maxn 2E5 + = 10 ; INT 의 main () { INT의 N; 반면 (CIN >> N) { LL A [maxn]; 부울 플래그 = 거짓 , 인 flag1 = 거짓 ; 위한 ( int로 I = 0 ; I <N은, 내가 ++ ) { CIN >>일체 포함]; 경우 (a [I] 1 ) 플래그 = 참 ; 다른 인 flag1 = 진정한 ; } 경우 (플래그 && 인 flag1) 정렬 (a하는 +의 N); 복사 (a하는 + N, ostream_iterator와 <LL> (COUT, " " )); COUT << ENDL; } 반환 0 ; }