站外题求助!!
  • 板块题目总版
  • 楼主Even_lyy
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/10/30 22:24
  • 上次更新2023/11/4 01:49:20
查看原帖
站外题求助!!
242832
Even_lyy楼主2021/10/30 22:24

题面

我的思路是录入记录后,用一个r数组记录排名,冒泡排序法先排sum,再排time

代码如下:

#include <iostream>
#include <string>
using namespace std;
struct team
{
	int time = 0;
	int sum = 0;
	int question[10] = { 0 };
};
int main()
{
	int n, m, i, j, k;
	cin >> n >> m;
	team t[1000];
	int a, b, c;
	string s;
	//录入
	for (i = 0; i < m; i++)
	{
		cin >> a >> b >> c >> s;
		
		if(s=="ac"&&t[a - 1].question[c - 1] == 0)
		{
			t[a - 1].time += b;
			t[a - 1].question[c - 1] = 1;
			t[a - 1].sum++;
		}
		if (t[a - 1].question[c - 1] == 0 && s == "wa")
			t[a - 1].time += 20;

	}
	int r[1000] = { 0 };
	for (i = 0; i < n; i++)
		r[i] = i;
	int temp;

	//先从sum排
	for(i=0;i<n;i++)
		for (j = i + 1; j < n; j++)
		{
			if (t[r[i]].sum < t[r[j]].sum)
			{
				temp = r[i];
				r[i] = r[j];
				r[j] = temp;
			}
		}
	//再从time排
	for (i = 0; i < n; i++)
		for (j = i + 1; j < n; j++)
		{
			if (t[r[i]].sum == t[r[j]].sum&&t[r[i]].time > t[r[j]].time)
			{
				temp = r[i];
				r[i] = r[j];
				r[j] = temp;
			}
			//sum和time都一样编号小的先排
			if (t[r[i]].sum == t[r[j]].sum&&t[r[i]].time == t[r[j]].time)
				if (r[i] > r[j])
				{
					temp = r[i];
					r[i] = r[j];
					r[j] = temp;
				}
		}
	//输出
	for (i = 0; i < n; i++)
	{
		cout << (r[i] + 1) << " " << t[r[i]].sum << " " << t[r[i]].time << endl;
	}
}

用例子的数据输出是一样的,但是整进去就WA了QWQ

2021/10/30 22:24
加载中...