7 条题解

  • 1
    @ 2025-5-17 20:17:08
    
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    struct Student {
        int id;
        int score;
    };
    
    bool cmp(const Student &a, const Student &b) {
        if(a.score != b.score) return a.score > b.score;
        return a.id < b.id;
    }
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        
        int n, x;
        cin >> n >> x;
        vector<Student> students(n);
        
        for(int i = 0; i < n; i++) {
            students[i].id = i + 1;
            cin >> students[i].score;
        }
        
        sort(students.begin(), students.end(), cmp);
        
        // 输出排名表
        for(int i = 0; i < n; i++) {
            if(i) cout << " ";
            cout << students[i].id;
        }
        cout << endl;
        
        // 计算琦琦的排名
        int rank = 1;
        for(int i = 0; i < n; i++) {
            if(students[i].id == x) {
                // 检查前面是否有相同分数的
                while(i > 0 && students[i-1].score == students[i].score) {
                    i--;
                    rank--;
                }
                cout << rank << endl;
                break;
            }
            rank++;
        }
        
        return 0;
    }
    
    

    //好奇怪 //怎样都是90 AC

    • -2
      @ 2025-2-4 16:16:29
      #include<bits/stdc++.h>
      using namespace std;
      const int N=1e5+5,INF=0x3f3f3f3f;
      int n,x,f,ans;
      struct ren{
      	int ord,fen;
      }a[N];
      bool cmp(ren a,ren b){
      	if(a.fen!=b.fen)return a.fen>b.fen;
      	else return a.ord<b.ord;
      }
      int main()
      {
      	cin>>n>>x;
      	for(int i=1;i<=n;i++){
      		cin>>a[i].fen;
      		a[i].ord = i;
      	}
      	f = a[x].fen;
      	sort(a+1,a+n+1,cmp);
      	for(int i=1;i<=n;i++)cout<<a[i].ord<<" ";
      	for(int i=1;i<=n;i++){
      		if(a[i].fen==f){
      			cout<<endl<<i;
      			break;
      		}
      	}
      	return 0;
      }
      
      • -2
        @ 2024-11-28 22:05:05
        1. #include<bits/stdc++.h> #include #include #include<string.h> #include<stdio.h> #include #include #include<math.h> #include #include #include #include #include using namespace std; #define LL long long using namespace std; const int N = 100000 + 10; const int INF = 0x3f3f3f3f; int n , m , cnt , k; struct node { int id; int sum; }a [N];

        bool cmp (node a1 , node a2) { if (a1.sum == a2.sum) return a1.id < a2.id; return a1.sum > a2.sum; } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a [i].sum; a [i].id = i; } sort (a + 1 , a + n + 1 , cmp); for (int i = 1 ;i <= n; i++) { cout << a [i].id << " "; } cout << "\n"; for (int i = 1; i <= n; i++) { if (a [i].id == m) break; if(a [i - 1].sum != a [i].sum) { cnt += k; k = 1; } else k++; } cout << ++cnt; return 0; }

        • -2
          @ 2024-11-28 22:04:48

          #include<bits/stdc++.h> #include #include #include<string.h> #include<stdio.h> #include #include #include<math.h> #include #include #include #include #include using namespace std; #define LL long long using namespace std; const int N = 100000 + 10; const int INF = 0x3f3f3f3f; int n , m , cnt , k; struct node { int id; int sum; }a [N];

          bool cmp (node a1 , node a2) { if (a1.sum == a2.sum) return a1.id < a2.id; return a1.sum > a2.sum; } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a [i].sum; a [i].id = i; } sort (a + 1 , a + n + 1 , cmp); for (int i = 1 ;i <= n; i++) { cout << a [i].id << " "; } cout << "\n"; for (int i = 1; i <= n; i++) { if (a [i].id == m) break; if(a [i - 1].sum != a [i].sum) { cnt += k; k = 1; } else k++; } cout << ++cnt; return 0; }

          • -3
            @ 2024-11-24 22:05:31

            报错的 别看

            • -4
              @ 2024-11-27 13:03:02
              #include <bits/stdc++.h>
              #define LL long long
              using namespace std;
              const int N = 100000 + 10;
              const int INF = 0x3f3f3f3f;
              int n , m , cnt , k;
              struct node
              {
              	int id;
              	int sum;
              }a [N];
              
              bool cmp (node a1 , node a2)
              {
              	if (a1.sum == a2.sum)
              		return a1.id < a2.id;
              	return a1.sum > a2.sum;
              }
              int main()
              {
              	    cin >> n >> m;
              	    for (int i = 1; i <= n; i++)
              	    {
              	    	cin >> a [i].sum;
              	    	a [i].id = i;
              	    }
              	    sort (a + 1 , a + n + 1 , cmp);
              	    for (int i = 1 ;i <= n; i++)
              	    {
              	    	cout << a [i].id << " ";
              	    }
              	    cout << "\n";
              	    for (int i = 1; i <= n; i++)
              	    {
              	    	if (a [i].id == m) break;
              			if(a [i - 1].sum != a [i].sum)
              			{
              			    cnt += k;
              			    k = 1;
              		    }
              		    else
              		        k++;
              	    }
              	    cout << ++cnt;
              		return 0;
              }
              
              • -4
                @ 2024-11-24 22:04:43

                #include<bits/stdc++.h> #include #include #include<string.h> #include<stdio.h> #include #include #include<math.h> #include #include #include #include using namespace std; #define LL long long using namespace std; const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int a[1001][5],n; void kp(int l,int r) { int t,x,i=l,j=r; x=a[(l+r)/2][3]; while(i<=j) { while(x>a[i][3])i++; while(x<a[j][3])j--; if(i<=j) { t=a[i][0];a[i][0]=a[j][0];a[j][0]=t; t=a[i][1];a[i][1]=a[j][1];a[j][1]=t; t=a[i][2];a[i][2]=a[j][2];a[j][2]=t; t=a[i][3];a[i][3]=a[j][3];a[j][3]=t; t=a[i][4];a[i][4]=a[j][4];a[j][4]=t; i++;j--; } } if(l<j)kp(l,j); if(i<r)kp(i,r); } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]); a[i][3]=a[i][0]+a[i][1]+a[i][2];a[i][4]=i; } kp(1,n); int t; for(int i=1;i<=n;i++) { int k=i; while(a[i][3]==a[k][3])k++; k--; for(int j=k;j>=i;j--) for(int m=j;m<k;m++) if(a[m][4]<a[m+1][4]) { t=a[m][0];a[m][0]=a[m+1][0];a[m+1][0]=t; t=a[m][1];a[m][1]=a[m+1][1];a[m+1][1]=t; t=a[m][2];a[m][2]=a[m+1][2];a[m+1][2]=t; t=a[m][3];a[m][3]=a[m+1][3];a[m+1][3]=t; t=a[m][4];a[m][4]=a[m+1][4];a[m+1][4]=t; } } for(int i=n;i>=1;i--) printf("%d %d %d %d\n",a[i][0],a[i][1],a[i][2],a[i][3]); return 0; }

                • 1

                信息

                ID
                1966
                时间
                1000ms
                内存
                256MiB
                难度
                9
                标签
                递交数
                455
                已通过
                38
                上传者