11054 - Wine trading in Gergovia

来源:互联网 发布:乐股软件官网 编辑:程序博客网 时间:2024/05/01 05:48
描述:水题,不解释#include <cstdio>#include <cstdlib>int num[100010];int main(){    //freopen("a.txt","r",stdin);    int n;    while(scanf("%d",&n)!=EOF)    {        if(!n) break;        unsigned long long int sum=0;        for(int i=0; i<n; i++) scanf("%d",&num[i]);        for(int i=0; i<n; i++)            if(num[i]>0)            {                for(int j=i+1; j<n; j++) if(num[j]<0)                    {                        if(num[i]+num[j]<=0)                        {                            sum+=num[i]*(j-i);                            num[j]+=num[i];                            break;                        }                        else                        {                            sum+=abs(num[j])*(j-i);                            num[i]+=num[j];                            num[j]=0;                        }                    }            }            else if(num[i]<0)            {                for(int j=i+1; j<n; j++) if(num[j]>0)                    {                        if(num[i]+num[j]>=0)                        {                            sum+=abs(num[i])*(j-i);                            num[j]+=num[i];                            num[i]=0;                            break;                        }                        else                        {                            sum+=num[j]*(j-i);                            num[i]+=num[j];                            num[j]=0;                        }                    }            }        printf("%llu\n",sum);    }    return 0;}