結果
問題 | No.875 Range Mindex Query |
ユーザー |
![]() |
提出日時 | 2019-09-07 20:15:01 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 203 ms / 2,000 ms |
コード長 | 1,816 bytes |
コンパイル時間 | 972 ms |
コンパイル使用メモリ | 75,688 KB |
実行使用メモリ | 8,968 KB |
最終ジャッジ日時 | 2024-06-27 03:29:04 |
合計ジャッジ時間 | 3,362 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 18 |
ソースコード
#include <iostream>#include<vector>#include<algorithm>#include<string>#include<map>#include<set>#include<stack>#include<queue>#include<math.h>using namespace std;typedef long long ll;#define int long longtypedef vector<int> VI;typedef pair<int, int> pii;#define fore(i,a) for(auto &i:a)#define REP(i,n) for(int i=0;i<n;i++)#define eREP(i,n) for(int i=0;i<=n;i++)#define FOR(i,a,b) for(int i=(a);i<(b);++i)#define eFOR(i,a,b) for(int i=(a);i<=(b);++i)#define SORT(c) sort((c).begin(),(c).end())#define rSORT(c) sort((c).rbegin(),(c).rend())#define LB(x,a) lower_bound((x).begin(),(x).end(),(a))#define UB(x,a) upper_bound((x).begin(),(x).end(),(a))#define INF 1000000000#define LLINF 9223372036854775807#define mod 1000000007//vector<vector<int> > dp;//vector<vector<vector<int> > > vvvi;//dp=vector<vector<int> >(N, vector<int>(M,0));//vector<pair<int,int> > v;//v.push_back(make_pair(x,y));//priority_queue<int,vector<int>, greater<int> > q2;const int U = 1 << 17;pii dat[2000000];void update(int k, int v) {dat[k + U] = make_pair(v, k);k += U;while (k > 1) {k >>= 1;dat[k] = min(dat[k * 2], dat[k * 2 + 1]);}}pii query(int l, int r) {l += U;r += U;pii res(INF, INF);while (l <= r) {if ((l & 1) == 1)res = min(res, dat[l++]);if ((r & 1) == 0)res = min(res, dat[r--]);l >>= 1;r >>= 1;}return res;}signed main(){cin.tie(0);ios::sync_with_stdio(false);int N, Q;cin >> N >> Q;VI A(N);REP(i, N) {cin >> A[i];update(i, A[i]);}while (Q--) {int type;cin >> type;if (type == 1) {int l, r;cin >> l >> r;l--;r--;swap(A[l], A[r]);update(l, A[l]);update(r, A[r]);}else {int l, r;cin >> l >> r;l--;r--;cout << query(l, r).second + 1 << endl;}}return 0;}