样例全过,30 分求调

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[1000005];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		if(a[i]>a[m]) ans++;//评分更高
		else if(i<=m && a[i]==a[m]) ans++;//评分相等且顺序靠前
	}
	cout<<ans;
	return 0;
}

2 条评论

  • @ 2025-9-26 19:39:21

    哪几个点错了,我看一下数据

    • @ 2025-9-26 19:39:45

      毕竟那个团队是我的

  • @ 2025-9-26 19:33:12

    我也不知道,可能是要排序 附上题解代码

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    ll n,m;
    struct node{
        ll a,b;
    }arr[5000010];
    bool cmp(node A,node B){
        if(A.a!=B.a){
            return A.a>B.a;
        }
        return A.b>B.b;
    }
    int main() {  
        ios_base::sync_with_stdio(0);
        cin.tie(0),cout.tie(0);
        cin>>n>>m;
        for(ll i=1; i<=n; i++) {
            cin>>arr[i].a;
            arr[i].b=i;
        }
        sort(arr+1,arr+1+n,cmp);
        for(ll i=1;i<=n;i++){
            if(arr[i].b==m){
                cout<<i;
                return 0;
            }
        }
    }
    
    • @ 2025-9-27 11:38:07

      题解代码似乎是评分相同时按照输入顺序倒序排序? 改成else if(i>=m && a[i]==a[m])就过了:

      #include<bits/stdc++.h>
      using namespace std;
      int n,m;
      int a[1000005];
      int main(){
      	cin>>n>>m;
      	for(int i=1;i<=n;i++){
      		cin>>a[i];
      	}
      	int ans=0;
      	for(int i=1;i<=n;i++){
      		if(a[i]>a[m]) ans++;
      		else if(i>=m && a[i]==a[m]) ans++;
      	}
      	cout<<ans;
      	return 0;
      }
      
  • 1

信息

ID
6
时间
1000ms
内存
256MiB
难度
2
标签
(无)
递交数
17
已通过
3
上传者