九度OJ 1005
来源:互联网 发布:群硕软件 编辑:程序博客网 时间:2024/06/07 03:52
#include <iostream>#include <queue>#include <algorithm>#include <iterator>using namespace std;class student{public: student(int rk, int i, int j) : ge(rk), gi(i), id(j){} int getRank(){return ge + gi;} int getGe(){return ge;} int getGi(){return gi;} int getSch(){return q.front();} int getId(){return id;} bool isEmpty(){return q.empty();} void popSch(){q.pop();} void pushSch(int sch){q.push(sch);}private: int id; int ge; int gi; queue<int> q;};bool cmp (student *a, student *b){ if(a->getRank() > b->getRank()) return true; else if(a->getRank() == b->getRank() && a->getId() < b->getId()) return true; else return false;}class school{public: void setId(int i){id = i;} int getId(){return id;} bool isFull(){return stuId.size() >= maxNum;} int getMaxNum(){return maxNum;} void setMaxNum(int t){maxNum = t;} void insertStu(int id, int i, int j) { stuId.push_back(id); ge.push_back(i); gi.push_back(j); } void show() { sort(stuId.begin(), stuId.end()); //copy(stuId.begin(), stuId.end(), ostream_iterator<int>(cout, " ")); if(!stuId.empty()) cout << stuId[0]; for(int i = 1; i < stuId.size(); ++i) { cout << " " << stuId[i]; } cout << endl; } int getGe(){return ge.back();} int getGi(){return gi.back();}private: vector<int> stuId; vector<int> ge; vector<int> gi; int maxNum; int id;};int main(){ int n, m, k; vector<student*> vecStu; vector<school*> vecSch; while(cin >> n >> m >> k) { for(int i = 0; i < m; ++i) { int temp; cin >> temp; school *sch = new school; sch->setMaxNum(temp); sch->setId(i); vecSch.push_back(sch); } for(int i = 0; i < n; ++i) { int ge, gi, schId; cin >> ge >> gi; student *stu = new student(ge, gi, i); for(int j = 0; j < k; ++j) { cin >> schId; stu->pushSch(schId); } vecStu.push_back(stu); } sort(vecStu.begin(), vecStu.end(), cmp); for(int i = 0; i < n; ++i) { while(!vecStu[i]->isEmpty()) { if(vecSch[vecStu[i]->getSch()]->isFull()) { if(vecStu[i]->getGe() == vecSch[vecStu[i]->getSch()]->getGe() && vecStu[i]->getGi() == vecSch[vecStu[i]->getSch()]->getGi()) { vecSch[vecStu[i]->getSch()]->insertStu(vecStu[i]->getId(), vecStu[i]->getGe(), vecStu[i]->getGi()); break; } else { vecStu[i]->popSch(); } } else { vecSch[vecStu[i]->getSch()]->insertStu(vecStu[i]->getId(), vecStu[i]->getGe(), vecStu[i]->getGi()); break; } } } for(int i = 0; i < m; ++i) { vecSch[i]->show(); } for(int i = 0; i < m; ++i) { delete vecSch[i]; } for(int i = 0; i < n; ++i) { delete vecStu[i]; } vecStu.clear(); vecSch.clear(); } return 0;}
0 0
- 九度OJ 1005
- 九度OJ 1005
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 【九度OJ】1005【快速排序】
- 九度OJ--题目1005:Graduate Admission
- 九度OJ-1005 Graduate Admission
- 九度OJ 1005 Graduate Admission
- 九度 oj 题目1005:Graduate Admission
- 九度OJ-1005:Graduate Admission
- 九度OJ —— 1005
- 【九度OJ】1005:Graduate Admission
- 九度oj 1005 Graduate Admission
- 九度OJ:1000
- 【九度OJ】 1006
- 从root的android手机中导出app的db文件
- 第十四周项目2——带姓名的成绩单(文件版)
- hdu1710
- is not a class or namespace name解决方法
- C 语言中你想不到的一些问题
- 九度OJ 1005
- Telnet(it work)
- 面向对象技术——UML基础
- C语言面试题库1-2
- oracle登录错误(ORA-01033:ORACLE initialization or shutdown in progress)
- [ZedBoard移植嵌入式Linux教程(7)]制作boot.bin
- 九度OJ 1008
- 2013 国家自然科学基金中标项目软件工程
- Android adb opendir failed ,permission denied