Java程序练习-乱头发节

来源:互联网 发布:藤井莉娜淘宝店 编辑:程序博客网 时间:2024/04/29 09:25
乱头发节
时间限制: 10000ms内存限制: 10240kB
描述
农民John的某 N 头奶牛 (1 <= N <= 80,000) 正在过乱头发节!由于每头牛都意识到自己凌乱不堪的发型,FJ 希望统计出能够看到其它牛的头发的牛的数量。
每一头牛i有一个高度 h[i] (1 <= h[i] <= 1,000,000,000)而且面向右排成一排。因此,第i头牛可以看到她前面(右边)的那些牛的头,(即i+1, i+2,等等),只要那些牛的高度严格小于她的高度。
例如这个例子:
(牛面向右侧)
头发高度:10 3 7 4 12 2
牛的序号:1 2 3 4 5 6

牛#1 可以看到她们的发型 #2, 3, 4
牛#2 不能看到任何牛的发型
牛#3 可以看到她的发型 #4
牛#4 不能看到任何牛的发型
牛#5 可以看到她的发型 6
牛#6 不能看到任何牛的发型!
让c[i] 表示第i头牛可以看到发型的牛的数量;请输出c[1] 至c[N]的和。
如上面的这个例子,正确解是3+0+1+0+1+0=5。
时间限制:0.5秒
输入
第一行,一个数,n
第2行到第n+1行,每行是一个整数,表示第i头牛的高度。
输出
一个整数,表示c[1]至c[N]的和。
样例输入
6
10
3
7
4
12
2
样例输出
5
参考代码

/* * Messy Hair Festival 2011-10-1 2:33 PM Eric Zhou */import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(cin.readLine().trim());int h[] = new int[n];int i = 0,j = 0;long cnt = 0;for(i = 0;i < n;++ i)h[i] = Integer.parseInt(cin.readLine().trim());for(i = 0;i < n - 1;++ i){for(j = i + 1;j < n;++ j){if(h[i] <= h[j])break;elsecnt ++;}}System.out.println(cnt);}}