Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:256 MB

#554. 信用卡还款

Statistics

题目描述

西西有N(1 <= N <= 100,000)张银行卡,每张银行卡要么是储蓄卡,要么是信用卡。储蓄卡里存了钱,信用卡里借了钱。她的N张银行卡分别对应N个不同的银行,依次标号为1..N。 现在,信用卡还款日到了。西西需要给她的银行卡还款,她知道,她的存款钱比欠款多。假设银行分布在一条直线上,第i家银行位置距离西西家i米。西西打算沿着这条直线行走,从她存款的银行卡里取钱出来,并且还钱给她欠款的信用卡。 当她沿直线移动的时候,她可以从她存款的银行里取出所有的钱。当她有足够的钱可以还清她的某个债,就可以把钱还到欠钱的银行。银行i里西西存款为D_i元(-1,000 <= D_i <=1,000; D_i ≠ 0),负数表示西西欠银行i钱。 西西从家出发,位置为0,初始西西没有钱。求西西收回她的所有存款,并且还清她的欠债所需行走的最短距离是多少?注意:她必须在最后一家银行所在的位置,完成她的行走。

输入格式:

行1:一个整数:N 行2..N+1:第i+1行包含一个整数:D_i。

输出格式:

行1:一个整数,西西收回借债并且还清欠债,所需要行走的最短距离(单位为米)

输入样例#1:

5
100
-200
250
-200
200

输出样例#1:

9