求助,这样的代码大概多少分?
查看原帖
求助,这样的代码大概多少分?
485080
稽蒻•ᴥ•楼主2021/10/23 22:17
#include<bits/stdc++.h>
using namespace std;
struct node{
	long long x,id,s;
}a[10005];
bool cmp(node xxx,node yyy){
	if(xxx.x==yyy.x) return xxx.id<yyy.id;
	return xxx.x<yyy.x;
}
int main(){
	freopen("sort.in","r",stdin);
	freopen("sort.out","w",stdout);
	int n,q;
	cin >> n >> q;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i].x);
		a[i].id=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[j].id==i){
				a[j].s=j;
				//cout << a[j].s << " ";
			}
		}
	}
	//cout << endl;
	while(q--){
		long long k,xx,yy;
		scanf("%lld",&k);
		if(k==1){
			scanf("%lld%lld",&xx,&yy);
			int ss=0,p=0;
			for(int i=1;i<=n;i++){
				if(a[i].id==xx){
					ss=i;
					p=a[i].x;
					a[i].x=yy;
					break;
				}
			}
			//cout << "ss=" << ss << endl;
			int kk=0;
			if(yy==p) continue;
			if(yy<p){
				for(int i=1;i<=n;i++){
					if((a[i].x>yy&&a[i].x<p)||(a[i].x==yy&&a[i].id>a[ss].id)||(a[i].x==p&&a[i].id<a[ss].id)){
						a[i].s++;
						kk++;
					}
					//else break;
				}
				a[ss].s-=kk;
			}
			if(yy>p){
				for(int i=1;i<=n;i++){
					if((a[i].x<yy&&a[i].x>p)||(a[i].x==yy&&a[i].id<a[ss].id)||(a[i].x==p&&a[i].id>a[ss].id)){
						a[i].s--;
						kk++;
					}
					//else break;
				}
				a[ss].s+=kk;
			}
		}
		if(k==2){
			cin >> xx;
			//sort(a+1,a+n+1,cmp);
			//for(int i=1;i<=n;i++){
				//for(int j=1;j<=n;j++){
					//if(a[j].id==i){
						//a[j].s=j;
					//}
				//}
			//}
			for(int i=1;i<=n;i++){
				if(a[i].id==xx){
					cout << a[i].s  << endl;
					break;
				}
			}
		}
	}
	return 0;
}

P.S.你谷测试满分,计蒜客76

2021/10/23 22:17
加载中...