結果
問題 | No.59 鉄道の旅 |
ユーザー |
![]() |
提出日時 | 2016-03-04 18:35:49 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 39 ms / 5,000 ms |
コード長 | 1,852 bytes |
コンパイル時間 | 1,295 ms |
コンパイル使用メモリ | 84,164 KB |
実行使用メモリ | 7,936 KB |
最終ジャッジ日時 | 2024-12-24 22:08:07 |
合計ジャッジ時間 | 1,873 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 12 |
ソースコード
/* -*- coding: utf-8 -*-** 59.cc: No.59 鉄道の旅 - yukicoder*/#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<string>#include<vector>#include<map>#include<set>#include<stack>#include<list>#include<queue>#include<deque>#include<algorithm>#include<numeric>#include<utility>#include<complex>#include<functional>using namespace std;/* constant */const int MAX_N = 100000;const int MAX_W = 1000000;/* typedef */template <typename T, const int MAX_N>struct BIT {int n;T bits[MAX_N + 1];BIT() {}BIT(int _n) { init(_n); }void init(int _n) {n = _n;memset(bits, 0, sizeof(bits));}T sum(int x) {T s = 0;while (x > 0) {s += bits[x];x -= (x & -x);}return s;}void add(int x, T v) {while (x <= n) {bits[x] += v;x += (x & -x);}}};/* global variables */int wis[MAX_N];BIT<int,MAX_W> bit;/* subroutines *//* main */int main() {int n, k;cin >> n >> k;int maxw = 0;for (int i = 0; i < n; i++) {cin >> wis[i];if (maxw < wis[i]) maxw = wis[i];}bit.init(maxw);int wn = 0;for (int i = 0; i < n; i++) {int wi = wis[i];if (wi > 0) { // loadint c = wn - bit.sum(wi - 1);if (c < k) {bit.add(wi, 1);wn++;//printf("%d: %d loaded: c=%d, k=%d\n", i, wi, c, k);//for (int j = 1; j <= maxw; j++) printf("%d ", bit.sum(j));//putchar('\n');}//else//printf("%d: %d not loaded: c=%d\n", i, wi, c);}else { // unloadwi = -wi;int c = bit.sum(wi) - bit.sum(wi - 1);if (c > 0) {bit.add(wi, -1);wn--;//printf("%d: %d unloaded\n", i, wi);}//else//printf("%d: %d not unloaded: c=%d\n", i, wi, c);}}printf("%d\n", wn);return 0;}