結果
問題 | No.610 区間賞(Section Award) |
ユーザー | merom686 |
提出日時 | 2017-12-10 00:20:52 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 25 ms / 2,000 ms |
コード長 | 1,028 bytes |
コンパイル時間 | 660 ms |
コンパイル使用メモリ | 76,148 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-30 05:56:09 |
合計ジャッジ時間 | 2,680 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> using namespace std; struct BIT { BIT(int n) : s(n + 1), n(n) {} int sum(int k) { int r = 0; for (; k > 0; k -= k & -k) r += s[k]; return r; } void add(int i, int v) { for (int k = i + 1; k <= n; k += k & -k) s[k] += v; } vector<int> s; int n; }; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; a[i]--; } vector<int> c(n); for (int i = 0; i < n; i++) { int b; cin >> b; b--; c[b] = i; } vector<int> r(n); BIT bit(n); for (int i = n - 1; i >= 0; i--) { int t = c[a[i]]; if (bit.sum(t) == 0) r[a[i]] = 1; bit.add(t, 1); } for (int i = 0; i < n; i++) { if (r[i]) cout << i + 1 << '\n'; } return 0; }