蒟蒻求助60分
查看原帖
蒟蒻求助60分
27423
windflower楼主2021/10/27 11:41
#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<=r;i++)
using namespace std;
int arr[10000],sub[10000];
int main(){
	int n,q,a,x,y;
	scanf("%d%d",&n,&q);
	rep(i,1,n)scanf("%d",&arr[i]);
	rep(i,1,n){
		int ans=1;
		rep(j,1,n){
			if(arr[j]<arr[i])ans++;
			if(arr[j]==arr[i]&&j<i)ans++;
		}
		sub[i]=ans;
	}
	rep(i,1,q){
		scanf("%d",&a);
		if(a==1){
			scanf("%d%d",&x,&y);
			if(arr[x]!=y){
			    rep(j,1,x-1)if((arr[j]-arr[x])*(arr[j]-y)<0)sub[j]+=y>arr[x]?-1:1;
			    rep(j,x+1,n)if((arr[j]-arr[x])*(arr[j]-y)<0)sub[j]+=y>arr[x]?-1:1;
			    rep(j,1,x-1)if(arr[j]==y&&y>arr[x])sub[j]-=1;else if(arr[j]==arr[x]&&y<arr[x])sub[j]+=1;
			    rep(j,x+1,n)if(arr[j]==arr[x]&&y>arr[x])sub[j]-=1;else if(arr[j]==y&&y<arr[x])sub[j]+=1;
			    int ans=1;
			    arr[x]=y;
			    rep(j,1,n)if(arr[j]<arr[x])ans++;else if(arr[j]==arr[x]&&j<x)ans++;
			    sub[x]=ans;
		    }
		}
		if(a==2){
			scanf("%d",&x);
			printf("%d\n",sub[x]);
		}
	}
	return 0;
}

零散着WA了几个点(时间没超,最后几个点500ms),看来看去看不出哪里有问题

2021/10/27 11:41
加载中...