1 条题解
-
1
煎蛋!!!
大
水题# include <bits/stdc++.h> using namespace std; struct num { int x, v; }; const int N = 8010; num a[N]; int mp[N]; int main() { int n, q; cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> a[i].v; a[i].x = i; } for (int i = 1; i <= n; i++) { for (int j = i; j >= 2; j--) { if (a[j].v < a[j - 1].v) { swap(a[j], a[j - 1]); } } } for (int i = 1; i <= n; i++) { mp[a[i].x] = i; } while (q--) { int t; cin >> t; if (t == 1) { int flag = 0; int x, v, idx; cin >> x >> v; for (int i = 1; i <= n; i++) { if (x == a[i].x) { if (a[i].v > v) { flag = 1; } else if (a[i].v < v) { flag = 2; } idx = i; a[i].v = v; break; } } if (flag == 1) { for (int i = idx; i > 1; i--) { if (a[i].v < a[i - 1].v || (a[i].v == a[i - 1].v && a[i].x < a[i - 1].x)) { swap(a[i], a[i - 1]); mp[a[i].x] = i; mp[a[i - 1].x] = i - 1; } } } if (flag == 2) { for (int i = idx; i < n; i++) { if (a[i].v > a[i + 1].v || (a[i].v == a[i + 1].v && a[i].x > a[i + 1].x)) { swap(a[i], a[i + 1]); mp[a[i].x] = i; mp[a[i + 1].x] = i + 1; } } } } else { int x; cin >> x; printf("%d\n", mp[x]); /* for (int i = 1; i <= n; i++) { if (a[i].x == x) { printf("%d\n", i); break; } } */ } } return 0; }
- 1
信息
- ID
- 7048
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 19
- 已通过
- 13
- 上传者