結果
問題 |
No.3238 Shadow
|
ユーザー |
|
提出日時 | 2025-08-16 17:48:38 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 116 ms / 2,000 ms |
コード長 | 677 bytes |
コンパイル時間 | 3,922 ms |
コンパイル使用メモリ | 253,516 KB |
実行使用メモリ | 8,532 KB |
最終ジャッジ日時 | 2025-08-16 17:48:45 |
合計ジャッジ時間 | 6,249 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; int op(int a, int b) { return max(a, b); } int e() { return -1; } int main () { int N; cin >> N; segtree<int, op, e> sg(N); std::vector<int> lv(N), A(N); for (int i = 0; i < N; i ++) { int a; cin >> a; a --; A[i] = a; lv[i] = sg.prod(0, a) + 1; sg.set(a, lv[i]); } int siz = *max_element(lv.begin(), lv.end()) + 1; vector<int> mx(siz, N + 100), my(siz, N + 100); for (int i = 0; i < N; i ++) { int l = lv[i]; mx[l] = min(mx[l], i+1); my[l] = min(my[l], A[i]+1); } for (int i = 0; i < siz; i ++) { printf("%d %d\n", mx[i], my[i]); } cout << flush; }