这样能AC吗
查看原帖
这样能AC吗
304551
xfzf_shentao楼主2021/10/24 07:45
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int a[10010],b[10010],n,Q,T,c,x,y,s,f[10010];
struct node {
	int x,y;
};
int read() {
	int f=1,x=0;
	char ch=getchar();
	for(; ch<'0'||ch>'9'; ch=getchar()) if (ch=='-') f=-1;
	for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-48;
	return x*f;
}
int main() {//按从小到大进行排序
	//freopen("sort.in","r",stdin);
	//freopen("sort.out","w",stdout);
	n=read();
	Q=read();
	for(int i=1; i<=n; i++) a[i]=read();
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=i-1; j++)
			if (a[i]>=a[j]) f[i]++;
		for(int j=i+1; j<=n; j++)
			if (a[i]>a[j]) f[i]++;
		f[i]++;
	}
	for(int T=1; T<=Q; T++) {
		c=read();
		if (c==1) {
			x=read();
			y=read();
//			a[x]=y;
			f[x]=1;
			for(int i=1;i<=x-1;i++)
				if (y>=a[i]) f[x]++;
			for(int i=x+1;i<=n;i++)
				if (y>a[i]) f[x]++;
			for(int i=1;i<=x-1;i++){
				if ((a[x]>=a[i])&&(y<a[i]))f[i]++;
				else if (a[x]<a[i]&&(y>=a[i])) f[i]--;
		}
			for(int i=x+1;i<=n;i++){
				if (a[x]>a[i]&&(y<=a[i])) f[i]++;
				else
				if (a[x]<=a[i]&&(y>a[i])) f[i]--; 
			}
			a[x]=y;
		}
		if (c==2) {
			x=read();
			printf("%d\n",f[x]);
		}
	}
	return 0;
}
2021/10/24 07:45
加载中...