吃早饭
同学们每天早上都会晨练,但是每次运动后都会很饿,于是他们回去吃早饭,信奥班的同学们当然很有素质,他们都遵守规矩排队。每个同学都面向窗口,一共有 N 个同学。现在你想知道每个同学能够看到的前面的同学的个数和是多少。
定义一个同学能够看到的人为在他前面且身高严格低于他的人,并且他的视线会被在他前面第一个身高大于等于他的人挡住。也就是说无论如何也无法看到再前面的人了。
输入:N+1 行
第一行一个正整数N表示同学的个数。
以下 N 行分别表示从后到前(窗口)同学的身高 a.
输出:一行一个整数,表示所有同学能看到的人的个数和。
样例:
data.in
6
10 3 7 4 12 2
data.out
5
数据范围
30% 1<=N<=100,
100% 1<=N<=80000,1<=a<=1000000000.
Code:
时间复杂度比较高
void myfun(vector<int>&num)
{
int count = 0;
for (int i=0;i<num.size();i++)
{
int temp = num[i];
for (int j=i-1;j>=0;j--)
{
if (num[j] < temp)
{
count++;
}
else
break;
}
}
cout << count << endl;
}