UVa 1614 Hell on the Markets
2015-05-10 16:09
344 查看
Most financial institutions had become insolvent during financial crisis and went bankrupt or were bought by larger institutions, usually by banks. By the end of financial crisis of all the financialinstitutions only two banks still continue to operate. Financial markets had remained closed throughout the crisis and now regulators are gradually opening them. To prevent speculation and to gradually ramp up trading they will initially allow trading in onlyone financial instrument and the volume of trading will be limited to i contracts for i -thminute of market operation. Two banks had decided to cooperate with the government to kick-start the market operation. The boards of directors had agreed on trading volume for each minute of this first trading session. One bank will be buying ai contracts( 1aii )during i -th minute ( 1in ),while the other one will be selling. They do not really care whether to buy or to sell, and the outside observer will only see the volume ai of contracts traded per minute. However, they do not want to take anyextra risk and want to have no position in the contract by the end of the trading session. Thus, if we define bi = 1 when the first bank is buying and bi = - 1 whenthe second one is buying (and the first one is selling), then the requirement for the trading session is that aibi =0 . Your lucky team of three still works in the data center (due to the crisis, banks now share the data center and its personnel) and your task is to find such bi or to report that this is impossible.
Input
The input file contains several test cases, each of them as described below. The first line of the input contains the single integer number n (1n100 000 ).The second line of the input contains n integer numbers -- ai ( 1aii ).Output
For each test case, the first line of the output must contain ``Yes'' if the trading session with specified volumes is possible and ``No'' otherwise. In the former option a second line must contain n numbers-- bi .Sample Input
4 1 2 3 3 4 1 2 3 4
Sample Output
No Yes 1 -1 -1 1
#include <cstdio>#include <algorithm>using namespace std;//int a[100010];int n;long long sum;int flag[100010];typedef struct a_node{int val;int num;bool operator < (const struct a_node& x) const{return val < x.val;}}a_node;a_node a[100010];int main(){while(scanf("%d", &n) == 1){sum = 0;for(int i = 0; i < n; i++){scanf("%d", &a[i].val);a[i].num = i;sum += a[i].val;flag[i] = -1;}if(sum % 2 != 0){printf("No\n");continue;}sort(a, a+n);long long now_sum = 0;int i = n-1;while(now_sum != sum/2){for(; i >= 0; i--){if(now_sum + a[i].val <= sum/2){flag[a[i].num] = 1;now_sum += a[i].val;i--;break;}}}/*if(now_sum != sum/2)printf("No\n");else{*/ printf("Yes\n");for(int i = 0; i < n; i++){if(i == 0)printf("%d", flag[i]);elseprintf(" %d", flag[i]);}printf("\n");// }}return 0;}关键点在于排序后a1-ai可以凑出1-sum(a1-ai)中的任意一个整数。
相关文章推荐
- UVA 1614 Hell on the Markets (思维 + 构造)
- UVA - 1614 Hell on the Markets(贪心 + 结论)
- UVA - 1614 Hell on the Markets 贪心+推理
- UVA 1614 Hell on the Markets 结论+贪心 (2008 NE)
- UVa 1614 - Hell on the Markets(贪心)
- Uva - 1614 - Hell on the Markets
- uva 1614 Hell on the Markets(数学相关)
- Uva - 1614 - Hell on the Markets
- UVA1614 - Hell on the Markets
- uva 1614 Hell on the Markets
- UVa 1614:Hell on the Markets(贪心)
- 习题8-10 UVA - 1614 Hell on the Markets 奇怪的股市(贪心)
- Hell on the Markets UVA - 1614 贪心+思维
- UVA 1614 - Hell on the Markets 奇怪的股市(贪心,结论)
- UVa 1614 Hell on the Markets (贪心+推理)
- UVA-1614 Hell on the Markets(贪心+推理) (有待补充)
- UVA 1614 Hell on the Markets 【贪心+结论题】
- 【习题 8-10 UVA - 1614】Hell on the Markets
- UVA 1614(p254)----Hell on the Markets
- uva 1614——UVA 1614 - Hell on the Markets