Educational Codeforces Round 42 (Rated for Div. 2) A. Equator

A. Equator
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input

output
standard output
output
standard output

Polycarp has created his own training plan to prepare for the programming contests. He will train for nn days, all days are numbered from 11 to nn, beginning from the first.

On the ii-th day Polycarp will necessarily solve aiai problems. One evening Polycarp plans to celebrate the equator. He will celebrate it on the first evening of such a day that from the beginning of the training and to this day inclusive he will solve half or more of all the problems.

Determine the index of day when Polycarp will celebrate the equator.

Input

The first line contains a single integer nn (1n2000001≤n≤200000) — the number of days to prepare for the programming contests.

The second line contains a sequence a1,a2,,ana1,a2,…,an (1ai100001≤ai≤10000), where aiai equals to the number of problems, which Polycarp will solve on the ii-th day.

Output

Print the index of the day when Polycarp will celebrate the equator.

Examples
Input
Copy
4
1 3 2 1
Output
Copy
2
Input
Copy
6
2 2 2 2 2 2
Output
Copy
3
Note

In the first example Polycarp will celebrate the equator on the evening of the second day, because up to this day (inclusive) he will solve 44 out of 77 scheduled problems on four days of the training.

In the second example Polycarp will celebrate the equator on the evening of the third day, because up to this day (inclusive) he will solve 66 out of 1212 scheduled problems on six days of the training.

题意:就是对一排数字从左到右开始找到前n个数字的和大于等于总和的一半。开始以为很简单,立即做了就提交了,结果第二天起来发现被hack了。要注意:整数的运算中有浮点数出现,所以整除的时候要在加1消除小数点后面的数被舍去的影响。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int maxn = 2e5 + 5;

int main()
{
    int a[maxn];
    int n;
    int i;
    int sum,ant;
    while(scanf("%d",&n) != EOF)
    {
        sum = 0;
        ant = 0;
        for(i = 0;i < n;i++)
        {
            scanf("%d",&a[i]);
            sum += a[i];
        }
        for(i = 0;i < n;i++)
        {
            ant += a[i];
            if(ant >= (sum + 1) / 2)
            {
                break;
            }
        }
        printf("%d\n",i + 1);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值