pat 1080

来源:互联网 发布:怎么在excel里编程 编辑:程序博客网 时间:2024/05/16 09:13
#include<stdio.h>#include<vector>#include<algorithm>using namespace std;struct person{    int ge, gi;    int total;    int index;    int rank;} app[40000],s[100];int school[100];vector<int>stu[40000];vector<int>sch[100];bool cmp(const struct person &a, const struct person &b){    if (a.total == b.total)        if (a.ge == b.ge)            return a.index < b.index;        else return a.ge > b.ge;    else return a.total > b.total;}int main(){    int NumOfApp, NumOfSch, NumOfCh;    freopen("1.in", "r", stdin);    scanf("%d%d%d", &NumOfApp, &NumOfSch, &NumOfCh);    int i,j,choice;    for (i = 0; i < NumOfSch; i++)        scanf("%d", &school[i]);    for (i = 0; i < NumOfApp; i++){        scanf("%d%d", &app[i].ge, &app[i].gi);        app[i].total = (app[i].ge + app[i].gi) / 2;        app[i].index = i;        for (j = 0; j < NumOfCh; j++)        {            scanf("%d", &choice);            stu[i].push_back(choice);        }    }    sort(app, app + NumOfApp, cmp);    /*    for (i = 0; i < NumOfApp; i++)        printf("%d\n", app[i].index);*/    vector<int>::iterator k;    for (i = 0; i < NumOfApp; i++){        if (app[i].index >= NumOfApp)            continue;        for ( k = stu[app[i].index].begin(); k != stu[app[i].index].end(); k++){            j = *k;            if (sch[j].size() < school[j])            {                sch[j].push_back(app[i].index);                s[j] = app[i];                break;            }            else if (app[i].total == s[j].total &&app[i].ge == s[j].ge){                sch[j].push_back(app[i].index);                s[j] = app[i];                break;            }        }    }    for (i = 0; i < NumOfSch; i++){        sort(sch[i].begin(), sch[i].end());        for (j = 0; j < sch[i].size(); j++){            printf("%d", sch[i][j]);            if (j == sch[i].size() - 1)                continue;            putchar(' ');        }        putchar('\n');    }    return 0;}
0 0
原创粉丝点击