关于时间复杂度
查看原帖
关于时间复杂度
363144
zljhenry楼主2021/10/25 22:13

我的代码:(TLE)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#define M 8005
using namespace std;
int n,Q,a[M];
int main(){
	scanf("%d %d",&n,&Q);
	for(int i=1;i<=n;i++){
		scanf("%d",a+i);
	}
	for(int q=1,x,v,k,cnt;q<=Q;q++){
		scanf("%d %d",&k,&x);
		if(k==1){
			scanf("%d",&v);
			a[x]=v;
		}else{
			cnt=0;
			for(int i=1;i<=n;i++){
				if(a[i]<a[x]) cnt++;
				if(a[i]==a[x]&&i<x) cnt++;
			}
			/*for(int j=x;j>=1;j--)if(a[j]<=a[x])cnt++;
            for(int j=x+1;j<=n;j++)if(a[j]<a[x])cnt++;*/
			printf("%d\n",cnt);
		}
	}
	return 0;
}

另一个人的带代码:(AC)

#include<cstdio>
#include<algorithm>
#define N 8005
using namespace std;
int a[N],n,q;
int main(){
    scanf("%d %d",&n,&q);
    for(int i=1;i<=n;i++)scanf("%d",a+i);
    for(int i=1,op,x,v,ans;i<=q;i++){
        scanf("%d %d",&op,&x);
        if(op==2){
            ans=0;
            for(int j=x;j>=1;j--)if(a[j]<=a[x])ans++;
            for(int j=x+1;j<=n;j++)if(a[j]<a[x])ans++;
            printf("%d\n",ans);
        }
        else{
            scanf("%d",&v);
            a[x]=v;
        }
    }
    return 0;
}

这有什么不一样吗,为什么我就76分?

2021/10/25 22:13
加载中...