Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33505 wangjiajian [CSP-J2021]插入排序 C++ 编译错误 0 0 MS 0 KB 1417 2021-12-06 18:26:24

Tests(0/0):


#include<bits/stdc++.h> using namespace std; int n, q, s; int index[100005]; struct node { int a, id; bool operator <(const node &n)const { return a<n.a || (a==n.a && id<n.id); } } arr[100005]; int main() { // freopen("sort.in","r",stdin); // freopen("sort.out","w",stdout); scanf("%d%d", &n, &q); for(int i=1; i<=n; i++) { arr[i].id = i; scanf("%d", &arr[i].a); } sort(arr+1, arr+n+1); for(int i=1; i<=n; i++) { index[arr[i].id] = i; } while(q--) { int op, x, y; scanf("%d%d", &op, &x); if(op == 1) { scanf("%d", &y); s = index[x]; arr[index[x]].a = y; for(int i=s-1; i>=1; i--) { if(arr[i].a>y || (arr[i].a==y && x<arr[i].id)) { swap(index[x], index[arr[i].id]); swap(arr[s], arr[i]); s = index[x]; } else break; } for(int i=s+1; i<=n; ++i) { if(arr[i].a<y || (arr[i].a==y && x>arr[i].id)) { swap(index[x], index[arr[i].id]); swap(arr[s], arr[i]); s = index[x]; } else break; } } else printf("%d\n", index[x]); } return 0; }


测评信息: