P1051 谁拿了最多奖学金

我本来不想写这种东西的....但是....

这一题是一个人多个数据...结构体...自己写cmp...判定判定判定判定...累积累积累积...sort...完了。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
#define tcl(a,b,c) for(a=b;a<=c;a++)
struct data
{
    string n;
    int s,c,txt;
    char gan,w;
    int sum;
    int id;
}a[100001];
bool cmp(data a,data b)
{
    if(a.sum==b.sum)
    {
        return a.id<b.id;
    }
    else return a.sum>b.sum;
}
int main()
{
    int n,ans=0,i;
    scanf("%d",&n);
    tcl(i,1,n)
    {
        cin>>a[i].n>>a[i].s>>a[i].c>>a[i].gan>>a[i].w>>a[i].txt;
    }
    tcl(i,1,n)
    {
        if(a[i].s>80&&a[i].txt>=1) a[i].sum+=8000;
        if(a[i].s>85&&a[i].c>80) a[i].sum+=4000;
        if(a[i].s>90) a[i].sum+=2000;
        if(a[i].s>85&&a[i].w=='Y') a[i].sum+=1000;
        if(a[i].c>80&&a[i].gan=='Y') a[i].sum+=850;
        a[i].id=i;
        ans+=a[i].sum;
    }
    sort(1+a,1+a+n,cmp);
    cout<<a[1].n<<endl<<a[1].sum<<endl<<ans;
    return 0;
}

我也不知道为什么写这个
主要是这题让我明白了类型太多的时候你是没有自己想的那么厉害去用scanf的,乖乖用cin..

原文地址:https://www.cnblogs.com/LSWorld/p/char.html