제목 설명
과 일치 H H 건국 기념일, 왕이 초대 N 경품 게임을 장관 n 비트의. 첫째, 그는 각각의 상단에 왼쪽과 오른쪽에 각각 장관은 자신이 각은 오른쪽에 정수를 쓰기 왼쪽 된 정수 왕을 작성 할 수 있습니다. 그런 다음,하자 N- 형 연속으로 N-장관, 왕이 전면 대열에 서 있습니다. 줄 지어 후, 모든 장관들이 금화 왕 보상의 번호를 받게됩니다, 각 장관에 대한 동전의 수를 얻었다 : 오른손의 숫자로 나눈 수의 모든 장관의 앞 왼쪽에있는 행의 제품, 결과는 정수를 수득 내림된다.
왕이 장관은 특히 큰 상을받을 싶지 않기 때문에 그가 그렇게 가장 보상 장관을 얻기 위해, 그 팀의 순서를 재 배열 도움을 부탁드립니다, 가능한 한 적게 보상을 받았다. 왕의 위치가 항상 앞 순위에있다합니다.
입력 형식
첫 번째 라인은 정수를 포함 N- 형 , N- 형을 장관의 수를 나타낸다.
두 번째 행은 두 정수 포함 A와 B 사이의 공간에 의해 분리 B를 각각 오른쪽과 왼쪽 왕의 정수를 나타낸다.
이어서, N- N-행은 두 정수있어서 각 행 A와 B 는 각각 좌측 및 우측 사이의 공간에 의해 분리 된 B는 각각 정수 장관을 나타낸다.
출력 형식
금화 장관의 가장 번호를 재 배열 투어 우승 후 팀을 나타내는 정수를 얻을.
샘플 입출력
기입
(3) 1 2 3 7 4 4 6
수출
이
욕심 증거 : 왕이 왕이하자 장관 (P1)에, P2.
왕의 왕 L0 L0 R0의 가산 R0
P1 P2 L1 L2 R1 R2
P2 L1 L2 R1 R2 P1은
K1 = L0 / R1, K2 = 인 L0 * L1 / R2, K3 = L0 / R2, K4 = L0 * L2 / R1.
ans1 = 최대 (K1, K2) , ans2 = 최대 (K3은, K4)을,
외관상 K2> K3, K4> K1이므로 ans1> ans2 상기 K2> K4, 즉 L1 * R1> I2의 *의 R2의 경우,
따라서 정렬 A * B를을 누르하면 우선 순위가 될 수있다.
(정밀 연산 보드로서, 더 이상 설명)
사용법 #include <iostream> #INCLUDE <CString을> #INCLUDE < 문자열 > #INCLUDE <알고리즘> #INCLUDE <큐> #INCLUDE <적층> #INCLUDE <STDIO.H> #INCLUDE <cmath> #INCLUDE < 문자열 .H> # 포함 <벡터> #DEFINE는 오래 오래 것이다 사용하는 네임 스페이스 표준을; INT의 N, 렌즈 = 1 , = lenm는 1 레나 = 1 ; INT의 합 [ 10010 ] = { 0 , 1 } MAXN는 [ 10010 ] = { 0 , 1이다.이 } ANS는 [ 10010 ] 구조체 {중 , LL의 L, R & LT 부울 연산자 <( CONST X의) CONST { 복귀 L의 *의 R & LT <XL * XR은; // 프레스 동전 좌우 우선 순위 제조 } } COIN [ 1,001 ] 무효 시간 (X LL) // 정밀 승산 { INT T = 0 ] 대 ( INT I = . 1 , I는 = 렌즈 <; I ++는 ) SUM [I] * =엑스; 위한 ( int로 I = 1 ; i가 렌즈 = <; 내가 ++ ) { t + = 합 [I]; 합 [I] t의 % = 10 ; t / = 10 ; } 동안 (t! = 0 ) { 렌즈 ++ ; 합 [렌즈] t의 % = 10 ; t / = 10 ; } } 무효 사업부 (LL X) // 高精度除法 { memset 함수 (ANS, 0, 는 sizeof (ANS)); 레나 = 렌즈; INT의 t = 0 ; 위한 ( int로 = 렌즈를 I, I> = 1 , 난 - ) { t * = 10 ; t + = 합 [I]; 만약 (t> = X) { ANS [I] = t / (X); t의 % = X; } } 동안 (ANS [레나] == 0 ) { 경우 (레나 == 1) 휴식 ; 레나 - ; } } 공극 맥스 () // 高精度比较 { 경우 (레나> lenm는) { 위해 ( int로 I = 1 ; I <= 레나; 내가 ++ ) maxn [I] = 된 ANS [I]; lenm는 = 레나; } 다른 경우 (레나 == lenm는) { 대 ( INT I = 레나; I> = 1 , 난 - ) 경우 (maxn [I] <ANS [I]) { 대 ( INT의 J = 1 ; J <= 레나, J ++ ) maxn [J] = 된 ANS [J] lenm는 = 레나; 휴식 ; } } } INT 주 () { IOS :: sync_with_stdio ( 거짓 ); CIN >> N; CIN >> 코인 [ 0 ] 펜닐 >> 코인 [ 0 ] .R; 위한 ( int로 I = 1 난 = <N; I ++ ) CIN경화 >> [I] 펜닐 >> 코인 [I] .R; 정렬 (코인 + 1 , N + 코인은 + 1 ); 위한 ( int로 I = 1 ; i가 <= N; 내가 ++ ) { 회 (코인 [I - 1 ] 펜닐); DIV (코인 [I] .R); 최대 (); } 에 대해 ( int로 I = lenm는, I> = 1 , 난 - ) COUT << maxn [I]; 반환 0 ; }