记录编号 |
571636 |
评测结果 |
AAAAAAAAAAAAAAAAAAAAAAAAA |
题目名称 |
[CSP 2021J]插入排序 |
最终得分 |
100 |
用户昵称 |
yrtiop |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
6.308 s |
提交时间 |
2022-06-01 20:16:48 |
内存使用 |
3.71 MiB |
显示代码纯文本
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
const int maxn = 8e3 + 5;
int a[maxn],cnt[maxn];
int n,m;
int read() {
int s = 0;
char c = getchar();
for(;!isdigit(c);c = getchar());
for(;isdigit(c);c = getchar())s = (s << 1) + (s << 3) + (c ^ '0');
return s;
}
void write(int x) {
if(x > 9)write(x / 10);
putchar(x % 10 + '0');
return ;
}
void output(int x) {
write(x);
puts("");
return ;
}
void modify(int x,int v,int k) {
for(int i = 1;i <= n;++ i) {
if(i == x)continue ;
cnt[i] += k * (v < a[i]||(a[i] == v&&x <= i));
}
return ;
}
int main() {
freopen("csp2021pj_sort.in","r",stdin);
freopen("csp2021pj_sort.out","w",stdout);
n = read();
m = read();
for(int i = 1;i <= n;++ i) {
a[i] = read();
}
for(int i = 1;i <= n;++ i) {
for(int j = 1;j <= n;++ j) {
cnt[i] += (a[j] < a[i]||(a[i] == a[j]&&j <= i));
}
}
while(m --) {
int v,op = read(),x = read();
if(op & 1) {
v = read();
modify(x , a[x] , -1);
modify(x , a[x] = v , 1);
cnt[x] = 0;
for(int i = 1;i <= n;++ i)cnt[x] += (a[i] < a[x]||(a[i] == a[x]&&i <= x));
}
else {
output(cnt[x]);
}
}
return 0;
}