PTA 1095 B

/ la la la la la la lágrimas corrieron por fin terminó ohh
realidad simulo un poco tarjetas de preguntas tontas durante casi un año ohh
por favor, ignora automática
/
Esta pregunta es una simulación inocente
durante 1 está ordenada
de acuerdo a luego por puntuaciones de clasificación cada vez mayor no orden ascendente billete
inicializan una vez completado mil millones,
porque el nivel es un personaje difícil de tratar, por lo que utiliza un r () de la clase ellos ...
por 2 términos de barriles cosa
que escribir una función de de personajes que buscan su vez digital de
número directo en un cubo, un cubo mantuvo buena puntuación terminado ...
para 3 ohh este es el legendario tarjetas de un año en el que estaba
siempre quiero para inicializar una vez que se ha resuelto con una cadena que corresponde una matriz, la matriz se ha mantenido dentro de una fila de una buena sala de examen, sala de examen, así como un número de personas salvadas, pero de repente mi plato ... plato de llanto
por lo que sabia, de todos modos, no datos, la violencia en línea a miles de millones, y directa encontrar una tienda con un número de habitación examen conjunto, un número de depósito de la sala de examen, emmm, escribir una especie emmm, para el final ...!
el Código

#include <bits/stdc++.h>
using namespace std;
struct stu{
	string name;      //准考证号 
	int fen,ban,rank; //分数,考场编号,等级 
}sb[10004];
int ren[1005],de[1005];
int w[10005],ge[1005];
int r(char c) //得阶级斗争 
{
	if(c == 'T') return 3;
	if(c == 'A') return 2;
	if(c == 'B') return 1;
}
int db(string s) //得考场编号 
{
	int point = 0;
	for (int i = 0; i < 3; i++)
	{
		point = point*10+s[i]-'0';
	} 
	return point; 
}
int comp(stu a,stu b)
{
	if(a.rank == b.rank)
	{
		if(a.fen == b.fen) return a.name < b.name; //准考小优先 
		return a.fen > b.fen; //分高优先 
	} 
	return a.rank > b.rank ; // 阶级高优先 
} 
int comp2(int a,int b)
{
	if(ge[a] == ge[b]) return a < b; //人同班级编号小优先 
	return ge[a] > ge[b];  //人多优先 
} 
int main()
{
	int n,t;  string s;
	scanf("%d%d",&n,&t);
	for (int i = 0; i < n; i++)
	{
		cin>>s;  int b = db(s.substr(1,3));//得到考场号
		//printf("%d\n",b); 
		scanf("%d",&sb[i].fen);
		sb[i].name = s;
		sb[i].rank = r(s[0]); 
		sb[i].ban = b;
		ren[b]++; de[b] += sb[i].fen;
	}
	//初始化
	sort(sb,sb+n,comp);//按等级排序 
	for (int i = 1; i <= t; i++)
	{
		int what,b,ok = 0;  char c;
		scanf("%d",&what);
		if(what == 1)
		{
			scanf(" %c",&c);
			printf("Case %d: 1 %c\n",i,c);
			for (int j = 0; j < n; j++)
			{
				if(sb[j].name[0] == c)
				{ 
					ok  = 1;
					cout<<sb[j].name<<" "<<sb[j].fen<<endl;
				}
			}
			if(!ok) printf("NA\n");
		}
		else if(what == 2)
		{
			scanf("%d",&b);
			printf("Case %d: 2 %d\n",i,b);
			if(!ren[b]) printf("NA\n");
			else 		printf("%d %d\n",ren[b],de[b]);
		}
		else
		{
			int ws = 0;
			memset(w,0,sizeof(w));   
			memset(ge,0,sizeof(ge)); //记得初始化 
			cin >> s;
			printf("Case %d: 3 ",i); cout<<s<<endl;
			for (int j = 0; j < n; j++)
			{
				if(sb[j].name.substr(4,6) == s)
				{
					if(!ge[sb[j].ban])
					{
						w[ws++] = sb[j].ban;
					}
					ge[sb[j].ban]++;
				}
			} 
			if(!ws) printf("NA\n");
			else
			{
				sort (w,w+ws,comp2);
				for (int j = 0; j < ws; j++)
				{
					printf("%d %d\n",w[j],ge[w[j]]);
				}
			}
		}
	}
	return 0;
} 
Publicado 55 artículos originales · ganado elogios 1 · vistas 2643

Supongo que te gusta

Origin blog.csdn.net/qq_37548017/article/details/102686255
Recomendado
Clasificación