现在的位置: 首页 > 综合 > 正文

Codefroces 383 A Milking cows

2018年04月28日 ⁄ 综合 ⁄ 共 1747字 ⁄ 字号 评论关闭
A. Milking cows
time limit per test

 1 second

memory limit per test

 256 megabytes

input

 standard input

output

 standard output

Iahub helps his grandfather at the farm. Today he must milk the cows. There are n cows sitting in a row, numbered from 1 to n from
left to right. Each cow is either facing to the left or facing to the right. When Iahub milks a cow, all the cows that see the current cow get scared and lose one unit of the quantity of milk that they can give. A cow facing left sees all the cows with lower
indices than her index, and a cow facing right sees all the cows with higher indices than her index. A cow that got scared once can get scared again (and lose one more unit of milk). A cow that has been milked once cannot get scared and lose any more milk.
You can assume that a cow never loses all the milk she can give (a cow gives an infinitely amount of milk).

Iahub can decide the order in which he milks the cows. But he must milk each cow exactly once. Iahub wants to lose as little milk as possible. Print the minimum amount of milk that is lost.

Input

The first line contains an integer n (1 ≤ n ≤ 200000).
The second line contains n integers a1a2,
..., an, where ai is 0 if
the cow number i is facing left, and 1 if it is facing right.

Output

Print a single integer, the minimum amount of lost milk.

Please, do not write the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cincout streams
or the %I64dspecifier.

Sample test(s)
input
4
0 0 1 0
output
1
input
5
1 0 1 0 1
output
3
Note

In the first sample Iahub milks the cows in the following order: cow 3, cow 4,
cow 2, cow 1. When he milks cow 3,
cow 4 loses 1 unit of milk. After that, no more milk is lost.

这题应该是一个模拟吧,从头到尾扫一遍(从左往右),把面朝右边的奶牛标记下来,没遇到一个就给res++,遇到面朝向左的奶牛,那么就把ans+=res,也就是说把这头奶牛前面的面朝右的奶牛对它的影响更新到答案中去。

代码:

# include<cstdio>
# include<iostream>

using namespace std;

# define MAX 233333

typedef long long LL;

int main(void)
{
    int n;
    while ( cin>>n )
    {
        LL res = 0;
        LL ans = 0;
        LL a = 0;
       for ( int i = 0;i < n;i++ )
       {
           cin>>a;
            if ( a == 1 )
                res++;
                else
                    ans+=res;
        }
        cout<<ans<<endl;
    }



    return 0;
}

抱歉!评论已关闭.