1 条题解

  • 1
    @ 2023-5-7 12:30:41

    煎蛋!!!

    # 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
    上传者