結果

問題 No.59 鉄道の旅
ユーザー uafr_cs
提出日時 2015-09-15 00:50:24
言語 Java
(openjdk 23)
結果
AC  
実行時間 601 ms / 5,000 ms
コード長 1,352 bytes
コンパイル時間 2,354 ms
コンパイル使用メモリ 77,912 KB
実行使用メモリ 52,208 KB
最終ジャッジ日時 2024-12-24 21:51:46
合計ジャッジ時間 7,637 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 12
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static class BIT {
int[] dat;
public BIT(int n) {
dat = new int[n + 1];
}
public void add(int k, int a) { // k : 0-indexed
for (int i = k + 1; i < dat.length; i += i & -i) {
dat[i] += a;
}
}
public int sum(int s, int t) { // [s, t)
if (s > 0)
return sum(0, t) - sum(0, s);
int ret = 0;
for (int i = t; i > 0; i -= i & -i) {
ret += dat[i];
}
return ret;
}
public int get(int k) { // k : 0-indexed
int p = Integer.highestOneBit(dat.length - 1);
for (int q = p; q > 0; q >>= 1, p |= q) {
if (p >= dat.length || k < dat[p])
p ^= q;
else
k -= dat[p];
}
return p;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final int N = sc.nextInt();
final int K = sc.nextInt();
final int SIZE = 1000000 + 1;
BIT bit = new BIT(SIZE);
for(int i = 0; i < N; i++){
final int W = sc.nextInt();
if(W >= 0){
final int count = bit.sum(W, SIZE);
if(count < K){
bit.add(W, 1);
}
}else{
final int count = bit.sum(-W, -W + 1);
if(count > 0){
bit.add(-W, -1);
}
}
}
System.out.println(bit.sum(0, SIZE));
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0