#include<iostream>
#include<iomanip>
#include<math.h>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<map>
#define maxn 40010
using namespace std;
struct zhi {
int id;
int shu;
}chushi[maxn];
bool com(zhi a, zhi b) {
if (a.shu != b.shu) {
return a.shu < b.shu;
}
return a.id < b.id;
}
int n, m,caozuo,t[maxn];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> chushi[i].shu;
chushi[i].id = i;
}
sort(chushi + 1, chushi + 1 + n, com);
for (int i = 1; i <= n; ++i) {
t[chushi[i].id] = i;
}
for (int j = 1;j <= m; ++j) {
cin >> caozuo;
if (caozuo == 1) {
int x, y;
cin >> x >> y;
chushi[t[x]].shu = y;
for (int i = 2; i <=n; ++i) {
if (com(chushi[i],chushi[i-1])) {
swap(chushi[i], chushi[i-1]);
}
}
for (int i = n; i >1; --i) {
if (com(chushi[i],chushi[i-1])) {
swap(chushi[i],chushi[i - 1]);
}
}
for (int i = 1; i<= n; ++i) {
t[chushi[i].id] = i;
}
}
else {
int x;
cin >> x;
cout << t[x] << endl;
}
}
return 0;
}
inline int read() {
int w = 1, q = 0;
char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') w = -1, ch = getchar();
while (ch >= '0' && ch <= '9') q = q * 10 + ch - '0', ch = getchar();
return w * q;
}
和
#include<iostream>
#include<iomanip>
#include<math.h>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<map>
#define maxn 4001000
using namespace std;
struct zhi {
int id;
int shu;
}chushi[maxn];
bool com(zhi a, zhi b) {
if (a.shu != b.shu) {
return a.shu < b.shu;
}
return a.id < b.id;
}
int n, m,caozuo,t[maxn];
int read();
int main() {
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> chushi[i].shu;
chushi[i].id = i;
}
sort(chushi + 1, chushi + 1 + n, com);
for (int i = 1; i <= n; ++i) {
t[chushi[i].id] = i;
}
for (int j = 1;j <= m; ++j) {
cin >> caozuo;
if (caozuo == 1) {
int x, y;
cin >> x >> y;
chushi[t[x]].shu = y;
for (int i = 1; i < n; ++i) {
if (com(chushi[i],chushi[i+1])) {
swap(chushi[i], chushi[i+1]);
}
}不同的地方
for (int i = n; i >1; --i) {
if (com(chushi[i],chushi[i-1])) {
swap(chushi[i],chushi[i - 1]);
}
}
for (int i = 1; i<= n; ++i) {
t[chushi[i].id] = i;
}
}
else {
int x;
cin >> x;
cout << t[x] << endl;
}
}
return 0;
}
inline int read() {
int w = 1, q = 0;
char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') w = -1, ch = getchar();
while (ch >= '0' && ch <= '9') q = q * 10 + ch - '0', ch = getchar();
return w * q;
}
第二段代码只能过两个点