結果
問題 | No.59 鉄道の旅 |
ユーザー |
![]() |
提出日時 | 2015-04-13 22:35:29 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 49 ms / 5,000 ms |
コード長 | 778 bytes |
コンパイル時間 | 1,387 ms |
コンパイル使用メモリ | 159,972 KB |
実行使用メモリ | 11,264 KB |
最終ジャッジ日時 | 2024-12-24 20:36:16 |
合計ジャッジ時間 | 2,296 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 12 |
ソースコード
#include "bits/stdc++.h"using namespace std;#define MAX 20class BIT{public:int dp[1 << MAX];void init(){for (int i = 0; i < (1 << MAX); i++){dp[i] = 0;}}long long bitcall(int a){int ret = 0;while (a > 0){ret += dp[a];a &= a - 1;}return ret;}void bitadd(int a, int b){while (a < (1 << MAX)){dp[a] += b;a += a - (a & (a - 1));}}};int num[1 << MAX];BIT bit;int main(){int N, K;cin >> N >> K;int count = 0;for (int i = 0; i < N; i++){int W;cin >> W;if (W < 0){W = -W;if (num[W] == 0) continue;num[W]--;bit.bitadd(W, -1);count--;}else{if (count - bit.bitcall(W - 1) >= K) continue;num[W]++;bit.bitadd(W, 1);count++;}}cout << count << endl;}