提出 #328842


ソースコード 拡げる

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <numeric>
#define FOR(x, to) for (int x = 0; x < to; x++)

using namespace std;

typedef long long ll;
typedef pair<int, int> P;

int Q;

int n;
int dat[1 << 21];

void init() {
	n = 1;
	while (n <= 200000) {
		n *= 2;
	}
}

//[a, b)
//node k
//[l, r)
//query(a, b, 0, 0, r)
int query(int a, int b, int k, int l, int r) {
	if (r <= a || b <= l) return 0;
	if (a <= l && r <= b) return dat[k];
	else {
		int m = (l + r) / 2;
		return query(a, b, 2 * k + 1, l, m) + query(a, b, 2 * k + 2, m, r);
	}
}

void update(int k, int a) {
	k += n - 1;
	dat[k] = a;
	while (k > 0) {
		k = (k - 1) / 2;
		dat[k] = dat[2 * k + 1] + dat[2 * k + 2];
	}
}

int bs(int v) {
	int mn = 0;
	int mx = n;
	while (mx - mn > 1) {
		int m = (mn + mx) / 2;
		int q = query(0, m + 1, 0, 0, n);
		if (q < v) {
			mn = m;
		} else {
			mx = m;
		}
	}
	return mx;
}

int main() {
	init();
	cin >> Q;
	FOR(i, Q) {
		int t, x;
		cin >> t >> x;
		if (t == 1) {
			update(x, 1);
		} else {
			int p = bs(x);
			cout << p << endl;
			update(p, 0);
		}
	}
	return 0;
}


提出情報

提出日時
問題 C - データ構造
ユーザ apple_juice
言語 C++ (G++ 4.6.4)
得点 100
コード長 1344 Byte
結果 AC
実行時間 1167 ms
メモリ 2372 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 100 / 100
結果
AC × 2
AC × 16
セット名 テストケース
Sample sample_01.txt, sample_02.txt
All subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 23 ms 916 KiB
sample_02.txt AC 25 ms 1052 KiB
subtask1_01.txt AC 24 ms 804 KiB
subtask1_02.txt AC 24 ms 804 KiB
subtask1_03.txt AC 24 ms 1576 KiB
subtask1_04.txt AC 95 ms 2268 KiB
subtask1_05.txt AC 180 ms 2336 KiB
subtask1_06.txt AC 28 ms 2128 KiB
subtask1_07.txt AC 408 ms 2340 KiB
subtask1_08.txt AC 1112 ms 2268 KiB
subtask1_09.txt AC 1081 ms 2332 KiB
subtask1_10.txt AC 685 ms 2276 KiB
subtask1_11.txt AC 684 ms 2340 KiB
subtask1_12.txt AC 211 ms 2372 KiB
subtask1_13.txt AC 1159 ms 2340 KiB
subtask1_14.txt AC 1167 ms 2272 KiB
subtask1_15.txt AC 1007 ms 2268 KiB
subtask1_16.txt AC 634 ms 1956 KiB