作为一个菜鸡每次写完看柳婼的就更加觉得自己是个NC
先上自己的脑瘫代码
#include
#include
#include
#include
#include
#include <unordered_map>
#include
#include
using namespace std;
struct stu
{
string name;
int score;
};
bool cmp(stu a,stu b)
{
if(a.score!=b.score)
return a.score>b.score;
else
return a.name<b.name;
}
int main()
{
int p,m,n;
cin>>p>>m>>n;
map<string,int>P,M,N,flag1,flag2;
vectorper;
vectorsb;
string temp;int temp1;
for(int i=0;i<p;i++)
{
cin>>temp>>temp1;
P[temp]=temp1;
flag1[temp]=1;
per.push_back(temp);
}
for(int i=0;i<m;i++)
{
cin>>temp>>temp1;
M[temp]=temp1;
flag2[temp]=1;
if(flag1[temp]!=1)
{
P[temp]=-1;
per.push_back(temp);
}
}
for(int i=0;i<n;i++)
{
cin>>temp>>temp1;
N[temp]=temp1;
if(flag1[temp]!=1&&flag2[temp]!=1)
{
per.push_back(temp);
P[temp]=-1;
M[temp]=-1;
}
else if(flag1[temp]!=1&&flag2[temp]==1)
{
P[temp]=-1;
}
else if(flag1[temp]==1&&flag2[temp]!=1)
{
M[temp]=-1;
}
}
stu temp2;
for(int i=0;i<per.size();i++)
{
if(P[per[i]]<200)
;
else
{
if(M[per[i]]==-1)
{
if(N[per[i]]==-1||N[per[i]]<60)
continue;
else
{
temp2.name=per[i];
temp2.score=N[per[i]];
sb.push_back(temp2);
}
}
else if(M[per[i]]1&&N[per[i]]-1)
{
continue;
}
else
{
double su=0;
temp2.name=per[i];
if(M[per[i]]>N[per[i]])
su=(double)M[per[i]]*0.4+(double)N[per[i]]*0.6;
else
su=N[per[i]];
temp2.score=(int)(su+0.5);
if(temp2.score>=60)
sb.push_back(temp2);
}
}
}
sort(sb.begin(),sb.end(),cmp);
for(int i=0;i<sb.size();i++)
{
cout<<sb[i].name<<" “<<P[sb[i].name]<<” “<<M[sb[i].name]<<” “<<N[sb[i].name]<<” "<<sb[i].score<<endl;
}
return 0;
}
毫无技术含量,就是在记一个成绩时先看上一个成绩记了没有,如果没有就改为-1。
记一下柳婼大神的
#include
#include
#include
#include
哎 自己怎么就学不会这种简单的思考方法呢。。。
太菜了