あなたが保存した場合、長いノートのタイトルのチケット番号と同じくらいこの最後の点は、長い長い、慎重な事前0(鶏肉料理は説明に見えた)
性能範囲が非常に小さいので、それはそれはバケットソートサブクラスを使用し、初段へのランク
合計ランクはすぐに排出することができ、すべての方法のオペレータ指示し
、次のコードを:
#include <bits/stdc++.h>
using namespace std;
struct stu{
long long post; //准考证
int classo; //班级
int srank,drank;//总排名,分排名
int fen;
}q[50000];
int comp(stu A, stu B){
if(A.fen == B.fen) return A.post < B.post;
return A.fen > B.fen;
}
int main()
{
long long kk;
int T,n,N = 0,p,sumr = 0;
scanf("%d",&T);
for (int i = 1; i <= T; i++){
scanf("%d",&n); sumr += n;
int wa[105]={0},r[105] = {0};//桶记录
for (int j = 0; j < n; j++){
cin>>kk>>p;
wa[p]++;
//个人信息记录
q[N].post = kk;
q[N].fen = p;
q[N].classo = i;
N++;
}
for (int j = 100; j >= 0; j--){ //分班级排名记录
r[j] = wa[j+1] + 1;
wa[j] += wa[j+1];
// printf("%d %d\n",j,r[j]);
}
for (int j = N-1; j >= N-n; j--){
q[j].drank = r[q[j].fen];
}
}
sort(q,q+N,comp);
printf("%d\n",sumr);
for (int i = 0; i < N; i++){
if(!i) q[i].srank = 1;
else if(q[i].fen == q[i-1].fen) q[i].srank = q[i-1].srank;
else q[i].srank = i+1;
//总排名记录
printf("%013lld %d %d %d\n",q[i].post,q[i].srank,q[i].classo,q[i].drank);
}
return 0;
}