• [编程题] 最高分是多少


    老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 

    输入描述:
    输入包括多组测试数据。
    每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。
    学生ID编号从1编到N。
    第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩
    接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B,当C为'Q'的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少
    当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。



    输出描述:
    对于每一次询问操作,在一行里面输出最高成绩.
    输入例子:
    5 7
    1 2 3 4 5
    Q 1 5
    U 3 6
    Q 3 4
    Q 4 5
    U 4 5
    U 2 9
    Q 1 5
    
    输出例子:
    5
    6
    5
    9
     1 // ConsoleApplication4.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include "stdafx.h"
     6 
     7 #include <iostream>
     8 #include <vector>
     9 
    10 using namespace std;
    11 
    12 int getmax(int *p, int A, int B)
    13 {
    14     if (A > B)
    15     {
    16         A = A^B;
    17         B = A^B;
    18         A = A^B;
    19     }
    20     int max=p[A];
    21     for (int i = A; i <= B; ++i)
    22     {
    23         if (p[i] > max)
    24         {
    25             max = p[i];
    26         }
    27     }
    28     return max;
    29 }
    30 int _tmain(int argc, _TCHAR* argv[])
    31 {
    32     int N, M;
    33     char ch;
    34     int A, B;
    35     vector<int> max;
    36     while (cin >> N >> M)
    37     {
    38         int *p = new int[N];
    39 
    40         for (int i = 0; i < N; i++)
    41         {
    42             cin >> p[i];
    43         }
    44         for (int i = 0; i < M; i++)
    45         {
    46             cin >> ch >> A >> B;
    47             if (ch == 'Q')
    48             {
    49                 max.push_back(getmax(p, A - 1, B - 1));
    50             }
    51             else if (ch == 'U')
    52             {
    53                 p[A - 1] = B;
    54             }
    55         }
    56         for (vector<int>::iterator it = max.begin(); it < max.end(); it++)
    57         {
    58             cout << *it << endl;
    59         }
    60         max.clear();
    61         delete [] p;
    62     }
    63 
    64     return 0;
    65 }
  • 相关阅读:
    【递归】斐波那契数列第n个数
    二分查找【循环和递归】
    递归:正序、逆序输出一个正整数的各位数字
    Ubuntu x86-64汇编(5) 控制指令
    Ubuntu x86-64汇编(4) 数值操作指令
    Ubuntu x86-64汇编(3) 数值操作指令
    给X240换上了三键触摸板
    Ubuntu x86-64汇编(2)
    Ubuntu x86-64汇编(1)
    X240 Ubuntu18.04安装流水帐
  • 原文地址:https://www.cnblogs.com/hhboboy/p/5641799.html
Copyright © 2020-2023  润新知