結果
問題 | No.875 Range Mindex Query |
ユーザー |
|
提出日時 | 2024-08-06 23:54:14 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 291 ms / 2,000 ms |
コード長 | 688 bytes |
コンパイル時間 | 6,864 ms |
コンパイル使用メモリ | 255,552 KB |
最終ジャッジ日時 | 2025-02-23 21:06:48 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; pair<int, int> op(pair<int, int> a, pair<int, int> b){ return min(a, b); } pair<int, int> e(){ return make_pair(1e9, 0); } int main(){ int N, Q; cin >> N >> Q; vector<int> a(N); for (int i = 0; i < N; i++){ cin >> a[i]; } atcoder::segtree<pair<int, int>, op, e> seg(N); for (int i = 0; i < N; i++){ seg.set(i, make_pair(a[i], i)); } while (Q--){ int t, l, r; cin >> t >> l >> r; l--; r--; if (t == 1){ int L = seg.get(l).first, R = seg.get(r).first; seg.set(l, make_pair(R, l)); seg.set(r, make_pair(L, r)); } if (t == 2){ cout << seg.prod(l, r + 1).second + 1 << endl; } } }