D. Vus the Cossack and Numbers

69 篇文章 0 订阅
12 篇文章 1 订阅

D. Vus the Cossack and Numbers

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Vus the Cossack has nn real numbers aiai. It is known that the sum of all numbers is equal to 00. He wants to choose a sequence bb the size of which is nn such that the sum of all numbers is 00 and each bibi is either ⌊ai⌋⌊ai⌋ or ⌈ai⌉⌈ai⌉. In other words, bibi equals aiai rounded up or down. It is not necessary to round to the nearest integer.

For example, if a=[4.58413,1.22491,−2.10517,−3.70387]a=[4.58413,1.22491,−2.10517,−3.70387], then bb can be equal, for example, to [4,2,−2,−4][4,2,−2,−4].

Note that if aiai is an integer, then there is no difference between ⌊ai⌋⌊ai⌋ and ⌈ai⌉⌈ai⌉, bibi will always be equal to aiai.

Help Vus the Cossack find such sequence!

Input

The first line contains one integer nn (1≤n≤1051≤n≤105) — the number of numbers.

Each of the next nn lines contains one real number aiai (|ai|<105|ai|<105). It is guaranteed that each aiai has exactly 55 digits after the decimal point. It is guaranteed that the sum of all the numbers is equal to 00.

Output

In each of the next nn lines, print one integer bibi. For each ii, |ai−bi|<1|ai−bi|<1 must be met.

If there are multiple answers, print any.

Examples

input

Copy

4
4.58413
1.22491
-2.10517
-3.70387

output

Copy

4
2
-2
-4

input

Copy

5
-6.32509
3.30066
-0.93878
2.00000
1.96321

output

Copy

-6
3
-1
2
2

Note

The first example is explained in the legend.

In the second example, we can round the first and fifth numbers up, and the second and third numbers down. We can round the fourth number neither up, nor down.

=========================================================================

贪心一下,先都向下取整,求出来和,小于零就加1,加1的情况只在a[i]不等于b[i]的时候

# include<iostream>
# include<vector>
# include<bits/stdc++.h>

using namespace std;


int main()
{


  int n;
  cin>>n;
  double a[100000+10];

  double b[100000+10];
  double sum=0;
  for(int i=1;i<=n;i++)
  {
      cin>>a[i];

      b[i]=floor(a[i]);


      sum+=b[i];
  }


  for(int i=1;i<=n;i++)
  {
      if(abs(a[i]-b[i])<1e-6)
        continue;


      if(sum<0)
      {
          sum++;

          b[i]++;
      }
      else
      {
          break;
      }
  }

  for(int i=1;i<=n;i++)
  {
      cout<<b[i]<<endl;
  }



    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦三码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值