• Codeforces Round #109 (Div. 2) A. I_love_%username%【打擂台算法/满足当前数字在已经出现的数字的最大值和最小值之间的个数】


    A. I_love_%username%
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Vasya adores sport programming. He can't write programs but he loves to watch the contests' progress. Vasya even has a favorite coder and Vasya pays special attention to him.

    One day Vasya decided to collect the results of all contests where his favorite coder participated and track the progress of his coolness. For each contest where this coder participated, he wrote out a single non-negative number — the number of points his favorite coder earned in the contest. Vasya wrote out the points for the contest in the order, in which the contests run (naturally, no two contests ran simultaneously).

    Vasya considers a coder's performance in a contest amazing in two situations: he can break either his best or his worst performance record. First, it is amazing if during the contest the coder earns strictlymore points that he earned on each past contest. Second, it is amazing if during the contest the coder earns strictly less points that he earned on each past contest. A coder's first contest isn't considered amazing. Now he wants to count the number of amazing performances the coder had throughout his whole history of participating in contests. But the list of earned points turned out long and Vasya can't code... That's why he asks you to help him.

    Input

    The first line contains the single integer n (1 ≤ n ≤ 1000) — the number of contests where the coder participated.

    The next line contains n space-separated non-negative integer numbers — they are the points which the coder has earned. The points are given in the chronological order. All points do not exceed 10000.

    Output

    Print the single number — the number of amazing performances the coder has had during his whole history of participating in the contests.

    Examples
    input
    5
    100 50 200 150 200
    output
    2
    input
    10
    4664 6496 5814 7010 5762 5736 6944 4850 3698 7242
    output
    4
    Note

    In the first sample the performances number 2 and 3 are amazing.

    In the second sample the performances number 2, 4, 9 and 10 are amazing.

     【分析】:一串数字,求满足当前数字在已经出现的数字的最大值和最小值之间的个数(严格大于和小于)遍历一次,维护当前的最大值和最小值,然后判断计数就行了。

    【代码】:

    #include <bits/stdc++.h>
    
    using namespace std;
    int n,a[1050],sum,maxx,minx;
    int main()
    {
        while(cin>>n)
        {
            sum=0;
            cin>>a[0];//!!!
            minx=maxx=a[0];
            for(int i=1;i<n;i++)
            {
                cin>>a[i];
                if(a[i]>maxx)
                {
                    sum++;
                    maxx=a[i];
                }
                if(a[i]<minx)
                {
                    sum++;
                    minx=a[i];
                }
            }
            cout<<sum<<endl;
        }
        return 0;
    }
    数组开大点!
  • 相关阅读:
    外观模式
    适配器模式
    桥接模式
    中文词频统计
    英文词频统计
    字符串练习
    Python基础
    熟悉常用的Linux操作
    作业
    递归下降分析法
  • 原文地址:https://www.cnblogs.com/Roni-i/p/7941286.html
Copyright © 2020-2023  润新知