닉 [A1, A2 ...,] A =을 정수의 멋진 배열을받은 선물로 그의 어머니 그의 5 생일. 그는 이미 다양한 속성을 탐구하려고했지만 제품 a1⋅a2⋅은 ... 요소의 충분히 그를 크지 않을 듯하기 때문에 개봉 후 그는 많이 실망했다.
그는 배열을 던질 준비가되어 있었다, 그러나 그의 어머니는 그를 안심. 그녀는 그 배열이 다음과 같은 작업 후에 버릇되지 않을 것이다, 그에게 말했다 : 나는 (1≤i≤n) 및 할 인공 지능 어떤 인덱스 선택 : = - AI-1.
예를 들어, 그 1and I = I = 3으로 색인 요소이 동작을 적용한 후 배열 [-4, -1,3,1]에 [3 -4,1, -1]이 배열을 바꿀 수있다.
니콜라이 즉시 때때로 배열 많은의 정수의 제품을 높일 수 있다고 이해했다. 이제 그는 그가 요소 만이 작업 (아마도 0, 1 번 이상, 그가 원하는만큼)를 사용하여 정수의 최대 가능한 제품으로 배열을하고 싶어 결정했다, 몇몇이 작업을 수행하는 것이 금지되지 않는다 같은 인덱스를위한 시간.
콜야 도움 소자의 최대 가능한 제품과 배열을 인쇄하는 a1⋅a2⋅ ... 어떤 순서 만이 동작을 이용하여 수신 할 수있는.
복수 응답이있는 경우, 그 중 하나를 인쇄 할 수 있습니다.
입력
어레이의 정수 개수 - 첫 번째 라인은 정수 n (1≤n≤105)을 포함한다.
배열의 요소 - 번째 행은 N 개의 정수 A1, A2, ..., (-106≤ai≤106)를 포함
산출
인쇄 N 번호 - 지정된 배열 어떤 순서 만이 동작을 이용하여 수신 할 수있는 요소들의 최대 수와 제품 배열의 요소.
복수 응답이있는 경우, 그 중 하나를 인쇄 할 수 있습니다.
예
입력
4
2 2 2 2
산출
-2 -2 -2 -2
입력
1
0
산출
0
입력
삼
-3 -3 2
산출
-3 -3 2
문제의 의미는 : NUM = -num-1의 시퀀스의 최대 수 n의 제품 후 작업을 통해 출력을 보자 제목의 수는 N은 숫자 중 하나에서 작동 할 수 있습니다, 당신에게 의미
아이디어 : 작업이 마이너스가 후에는, 양수 또는 제로 분명히 경우는 절대 증가이기 때문에, 플러스의 절대 값은, 우리는,이 숫자가 음수되고있다 놓아야합니다
그래서 제품의 절대 값이 가장 큰이며 이 제품이, 우리는 n이 짝수 경우, 제품 확인에 긍정적 무엇 N을 결정해야 음수가 될 수 없습니다 분명하다;
n이 홀수 인 경우에는, 여기서 n의 음수의 최대 절대 값을 찾아야 동작이 양이 된 후, 그 생성물은 양을 최대가 ......
1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 #include<cmath>
5 #include<algorithm>
6 #include<map>
7 #include<set>
8 #include<vector>
9 #include<queue>
10 using namespace std;
11 #define ll long long
12 const int mod=1e9+7;
13 const int inf=1e9+7;
14
15 const int maxn=1e5+5;
16
17 int num[maxn];
18
19 int main()
20 {
21 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
22
23 int n;
24
25 while(cin>>n)
26 {
27
28 for(int i=0;i<n;i++)
29 {
30 cin>>num[i];
31 if(num[i]>=0)
32 num[i]=-num[i]-1;
33 }
34
35 if(n&1)
36 {
37 int minn=-1;
38 int mark_i=0;
39
40 for(int i=0;i<n;i++)
41 {
42 if(num[i]<minn)
43 {
44 minn=num[i];
45 mark_i=i;
46 }
47 }
48
49 num[mark_i]=-num[mark_i]-1;
50
51 }
52
53 for(int i=0;i<n-1;i++)
54 cout<<num[i]<<" ";
55 cout<<num[n-1]<<endl;
56
57 }
58
59 return 0;
60 }