目录
结构体:排序
输入输出
结构体:排序
[NOIP2007]奖学金
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=310;
int n;
struct Student
{
int chinese,math,eng,sum;
int idx;
}Stu[N];//定义一个结构体数组
bool cmp(Student a,Student b)
{
if(a.sum!=b.sum)
return a.sum>b.sum;//先按照总分大的排
else if(a.chinese!=b.chinese)
return a.chinese>b.chinese;//再按照语文成绩排
else
return a.idx<b.idx;//最后根据编号
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x,y,z;
cin>>x>>y>>z;
Stu[i]={x,y,z,x+y+z,i};
}
sort(Stu+1,Stu+n+1,cmp);//使用自定义排序
for(int i=1;i<=5;i++)
cout<<Stu[i].idx<<' '<<Stu[i].sum<<endl;
return 0;
}
输入输出
根据相应的格式使用scanf、printf进行输入、输出
特别格式读入、输出:
P8665 [蓝桥杯 2018 省 A] 航班时间
读入方式:
读入所有的数:while(cin>>a[++cnt])
读入所有(包括空格):string s; getline(cin,s);
将被空格隔开的数读入:
int cnt=0; string s; getline(cin,s);
stringstream line(s); while(line>>a[++cnt];
被空格隔开数据读入例题:
P8598 错误票据