結果

問題 No.1380 Borderline
ユーザー ose20ose20
提出日時 2021-03-18 11:25:41
言語 TypeScript
(5.4.3)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,681 bytes
コンパイル時間 4,697 ms
コンパイル使用メモリ 145,256 KB
最終ジャッジ日時 2024-04-28 02:19:17
合計ジャッジ時間 5,326 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.ts(2,21): error TS2307: Cannot find module 'fs' or its corresponding type declarations.

ソースコード

diff #

// npm install --save-dev @types/node
import * as fs from 'fs';
const input = fs.readFileSync('/dev/stdin', 'utf8');

const nlarray = input.split('\n');
const NKarray = nlarray[0].split(' ');
const N = parseInt(NKarray[0]);
const K = parseInt(NKarray[1]);
const parray = nlarray[1].split(' ');
const n_parray = parray.map(Number);

n_parray.sort(
    function(a, b) {
        if (a < b) return -1;
        if (a > b) return 1;
        return 0;
    }
);

// ここから違うコード
// pass[i] := ボーダーを i 点としたときの合格者数
let pass: number[] = [];

// 全員が 400 点をとって、かつ定員が N より小さい場合に対応するため
// ボーダーは 401 点まで考える (pi <= 400 なので pass[401] は必ず 0 になる)
for(let border = 0; border <= 401; border++) {
  let pass_num = 0;
  for (let j = 0; j < N; j++) {
    if(n_parray[j] >= border) {
      // もし j さんの点数が border 以上だったら
      pass_num += 1;
    }
  }
  // ボーダーが border 点の時の合格者人数は調べ終わったので配列に追加
  pass.push(pass_num);
}

// ボーダーをあげればあげるほど合格者は少なくなっていくので
// pass[0] >= pass [1] >= ... >= pass[400] が成り立っているはず
// 答えは、pass[i] を i が小さい順に見ていって
// 初めて合格者数が k 以下になる時の合格者数が答え
for(let i = 0; i <= 401; i++) {
  if(pass[i] <= K) {
    console.log(pass[i]);
    break;
    // 初めて条件を満たすものが答えなのであとはループを回さない(回すと条件を満たすものがすべて出力されてしまう)
  }
}
0