题目描述
有 N
𝑁
支队伍参赛,每个队伍的无人机成绩为 S
𝑆
,且每个无人机颜色被随机涂为蓝(b)、红(r)、绿(g)、紫(p)之一。
输入格式
第一行包含整数 N
𝑁
,表示参加的队伍数目,即无人机数目。
接下来 N
𝑁
行,每行包含每支参赛队伍的无人机颜色和打靶成绩 S
𝑆
,由空格分隔开。
输出格式
输出内容由两部分组成。
第一部分输出各种颜色对应的无人机数目。
第二部分根据按照成绩从大到小进行排序,输出无人机打靶成绩 S
𝑆
和对应的无人机颜色。
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 40;
int n;
int color[N];//不同颜色个数 b r g p 依次编号0 1 2 3
struct Robot
{
char color;
int score;
bool operator>(const Robot& t) const
{
return score > t.score;
}
}rt[N];
int main()
{
cin>>n;
for(int i = 0; i < n;i++)
cin>>rt[i].color>>rt[i].score;
stable_sort(rt,rt + n,greater<Robot>());
for(int i = 0 ; i < n;i++)
{
if(rt[i].color == 'b') color[0]++;
else if(rt[i].color == 'r') color[1]++;
else if(rt[i].color == 'g') color[2]++;
else color[3]++;
}
cout<<"blue"<<' '<<color[0]<<endl;
cout<<"red"<<' '<<color[1]<<endl;
cout<<"green"<<' '<<color[2]<<endl;
cout<<"purple"<<' '<<color[3]<<endl;
cout<<endl;
for(int i = 0;i < n;i++)
{
cout<<rt[i].score<<' ';
if(rt[i].color == 'b') cout<<"blue"<<endl;
else if(rt[i].color == 'r') cout<<"red"<<endl;
else if(rt[i].color== 'g') cout<<"green"<<endl;
else cout<<"purple"<<endl;
}
return 0;
}
//字符映射优化: