pat1080 graduate admission

来源:互联网 发布:淘宝一千零一夜男厨师 编辑:程序博客网 时间:2024/06/07 06:07
#include<iostream>#include<cstdio>#include<algorithm>#include<queue>using namespace std;#define N 40001#define M 101#define K 6struct Applicant{int id,ge,gi;double fg;int rank;int prefer[K];};struct School{int quota,lastrank;priority_queue<int,vector<int>,greater<int> > admitid;//int admitid[N];int count;};struct Comp{bool operator()(Applicant const &ap1,Applicant const &ap2){if(ap1.fg==ap2.fg) return ap1.ge>ap2.ge;return ap1.fg>ap2.fg;}};int main(){//freopen("C:\\Users\\frank\\Desktop\\in.txt","r",stdin);//inputint NN,MM,KK;cin>>NN>>MM>>KK;Applicant applicant[NN];School school[MM];for(int i=0;i<MM;++i){cin>>school[i].quota;school[i].count=0;}for(int i=0;i<NN;++i){cin>>applicant[i].ge>>applicant[i].gi;for(int j=0;j<KK;++j){cin>>applicant[i].prefer[j];}applicant[i].id=i;applicant[i].fg=(applicant[i].ge+applicant[i].gi)/2.0;}//sortsort(applicant,applicant+NN,Comp());//write the rankapplicant[0].rank=1;for(int i=1;i<NN;++i){if(applicant[i].fg==applicant[i-1].fg&&applicant[i].ge==applicant[i-1].ge){applicant[i].rank=applicant[i-1].rank;}else{applicant[i].rank=applicant[i-1].rank+1;}}//procedure to admitfor(int i=0;i<NN;++i){for(int j=0;j<KK;++j){int tmp=applicant[i].prefer[j];if(school[tmp].count<school[tmp].quota){school[tmp].admitid.push(applicant[i].id);++school[tmp].count;//school[tmp].admitid[school[tmp].count++]=applicant[i].id;if(school[tmp].count==school[tmp].quota)school[tmp].lastrank=applicant[i].rank;break;}else {if(applicant[i].rank==school[tmp].lastrank){school[tmp].admitid.push(applicant[i].id);++school[tmp].count;//school[tmp].admitid[school[tmp].count++]=applicant[i].id;break;}}}}//outputfor(int i=0;i<MM;++i){if(school[i].count==0) cout<<'\n';else{cout<<school[i].admitid.top();school[i].admitid.pop();/*cout<<school[i].admitid[0];for(int j=1;j<school[i].count;++j){cout<<' '<<school[i].admitid[j];}cout<<'\n';*/while(!school[i].admitid.empty()){cout<<' '<<school[i].admitid.top();school[i].admitid.pop();}cout<<'\n';}}}


0 0
原创粉丝点击