1. 程式人生 > >【華為機試】找最高分(通過此題熟悉牛客網Node輸入輸出)

【華為機試】找最高分(通過此題熟悉牛客網Node輸入輸出)

length 輸出 ons ken [0 接下來 lin tput int

來源:牛客網

老師想知道從某某同學當中,分數最高的是多少,現在請你編程模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.
輸入描述:

輸入包括多組測試數據。
每組輸入第一行是兩個正整數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。

輸出描述:

對於每一次詢問操作,在一行裏面輸出最高成績.

var readline = require(‘readline‘);
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false
});
   
var n,
    m = 0;
var sc = [];
   
var cur_line = 0;
rl.on(‘line‘, function(line) {
    var tokens = line.split(‘ ‘);
    cur_line 
+= 1; if (cur_line === 1) { n = parseInt(tokens[0]); m = parseInt(tokens[1]); } else if (cur_line === 2) { for (var i = 1; i <= n; ++i) { sc[i] = parseInt(tokens[i - 1]); } } else { var c = tokens[0]; var a = parseInt(tokens[1]);
var b = parseInt(tokens[2]); if (c === ‘Q‘) { var max = 0; for (var i = Math.min(a, b); i <= Math.max(a, b); ++i) { max = max < sc[i] ? sc[i] : max; } console.log(max); } else if (c === ‘U‘) { sc[a] = b; } if (cur_line >= m + 2) { n = 0; m = 0; sc.splice(0, sc.length); cur_line = 0; } } });

【華為機試】找最高分(通過此題熟悉牛客網Node輸入輸出)