您的位置:首页 > 其它

1015. 德才论 (25)

2018-03-02 17:04 148 查看
vector,sort以及函数重载的使用
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct node{
int num,s1,s2;
friend bool operator <(node a,node b)
{
if((a.s1+a.s2)!=(b.s1+b.s2))
return (a.s1+a.s2)>(b.s1+b.s2);
else if(a.s1!=b.s1)
return a.s1>b.s1;
else
return a.num<b.num;
}
};
int main()
{
int N,L,H,cnt=0;
//freopen("1015.txt","r",stdin);
scanf("%d %d %d",&N,&L,&H);
vector<node> v1,v2,v3,v4;
node p;
for(int i=0;i<N;i++)
{
scanf("%d %d %d\n",&p.num,&p.s1,&p.s2);
if(p.s1>=L&&p.s2>=L)
{
cnt++;
if(p.s1>=H&&p.s2>=H)
v1.push_back(p);
else if(p.s1>=H&&p.s2<H)
v2.push_back(p);
else if(p.s1<H&&p.s2<H&&p.s1>=p.s2)
v3.push_back(p);
else
v4.push_back(p);
}
}
printf("%d\n",cnt);
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
sort(v3.begin(),v3.end());
sort(v4.begin(),v4.end());
for(int i=0;i<v1.size();i++)
printf("%d %d %d\n",v1[i].num,v1[i].s1,v1[i].s2);
for(int i=0;i<v2.size();i++)
printf("%d %d %d\n",v2[i].num,v2[i].s1,v2[i].s2);
for(int i=0;i<v3.size();i++)
printf("%d %d %d\n",v3[i].num,v3[i].s1,v3[i].s2);
for(int i=0;i<v4.size();i++)
printf("%d %d %d\n",v4[i].num,v4[i].s1,v4[i].s2);
return 0;
}
柳的代码,简化代码#include<iostream>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{
int num,de,cai;
};
int cmp(node a,node b)
{
if((a.de+a.cai)!=(b.de+b.cai))
return (a.de+a.cai)>(b.de+b.cai);
else if(a.de!=b.de)
return a.de>b.de;
else
return a.num<b.num;
}
int main()
{
int n,low,high;
int i,j;
//freopen("1015.txt","r",stdin);
scanf("%d %d %d",&n,&low,&high);

vector<node> v[4];
node temp;
int total=n;
for(i=0;i<n;i++)
{
//cout<<"here"<<endl;
scanf("%d %d %d",&temp.num,&temp.de,&temp.cai);
if(temp.de<low||temp.cai<low)
total--;
else if(temp.de>=high&&temp.cai>=high)
v[0].push_back(temp);
else if(temp.de>=high&&temp.cai<high)
v[1].push_back(temp);
else if(temp.de<high&&temp.cai<high&&temp.de>=temp.cai)
v[2].push_back(temp);
else
v[3].push_back(temp);
}
printf("%d\n",total);

for(i=0;i<4;i++)
{
sort(v[i].begin(),v[i].end(),cmp);
for(j=0;j<v[i].size();j++)
printf("%d %d %d\n",v[i][j].num,v[i][j].de,v[i][j].cai);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: