九度 oj 题目1005:Graduate Admission

来源:互联网 发布:知乎 笛卡尔 方法论 编辑:程序博客网 时间:2024/05/16 12:00

http://ac.jobdu.com/problem.php?pid=1005


参考了 http://blog.csdn.net/abcjennifer/article/details/7292011


#include <stdio.h>#include <vector>#include <cstring>#include <algorithm>typedef struct applicant{     int ge,gi,choice[6],id;     friend bool operator < (struct applicant a, struct applicant b){         int aSum = a.ge + a.gi;        int bSum = b.ge + b.gi;        return aSum != bSum?  aSum > bSum:a.ge > b.ge;    }  } App; int main(){     //freopen("in/1005.in","r",stdin);     int n,m,k;     App apps[40001];    int quota[101];    int bar[101][2];    std::vector<int> enrollList[101];    while(scanf("%d%d%d",&n,&m,&k)!=EOF){         for (int i = 0; i < 101; ++i) enrollList[i].clear();         memset(bar,0,sizeof(bar) );         for (int i = 0; i < m; ++i)              scanf("%d","a[i]);          for (int i = 0; i < n; ++i) {             scanf("%d%d",&apps[i].ge,&apps[i].gi);              apps[i].id = i;            for (int j = 0; j < k; j++) {                 scanf("%d", &apps[i].choice[j]);              }         }         std::sort(apps,apps+n);         for (int i = 0;  i < n; ++i) {             for (int j = 0;  j< k; ++j) {                 int univ = apps[i].choice[j];                if( (bar[univ][0] == apps[i].ge&&bar[univ][1] == apps[i].gi)                        ||quota[univ] > 0){                     quota[univ]--;                    enrollList[univ].push_back(apps[i].id);                    bar[univ][0] = apps[i].ge;                    bar[univ][1] = apps[i].gi;                    break;                }               }           }          for (int i = 0; i < m; ++i) {             std::sort(enrollList[i].begin(),enrollList[i].end());              int l = (int) enrollList[i].size();            bool first = true;            for (int j = 0; j < l ; ++j) {                  if(first){                      printf("%d",enrollList[i][(unsigned)j]);                      first = false;                 }else{                      printf(" %d",enrollList[i][(unsigned)j]);                   }                  }            printf("\n");         }     }      return 0;}  


0 0
原创粉丝点击