1025 PTA最後のポイント。。。

あなたが保存した場合、長いノートのタイトルのチケット番号と同じくらいこの最後の点は、長い長い、慎重な事前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;
}
公開された55元の記事 ウォンの賞賛1 ビュー2635

おすすめ

転載: blog.csdn.net/qq_37548017/article/details/104918025