本文共 1528 字,大约阅读时间需要 5 分钟。
妈的智障
#include #include #include #include #include #include #include #include #include #include #define I scanf#define OL puts#define O printf#define F(a,b,c) for(a=b;a =0;a--)#define LEN 1010#define MAX (1<<30)+1#define V vector using namespace std;int N,M,K;struct Student{ int Ge,Gi,Gp,rank,id; int choice[10];};Student info[40010];bool cmp(Student a,Student b){ if(a.Gp!=b.Gp) return a.Gp>b.Gp; return a.Ge>b.Ge;}int lastRank[110];int quota[110];vector output[110];int main(){// freopen("1080.txt","r",stdin); int i,j; I("%d%d%d",&N,&M,&K); FF(i,M) I("%d","a[i]); FF(i,N){ I("%d%d",&info[i].Ge,&info[i].Gi); info[i].Gp=(info[i].Ge+info[i].Gi); info[i].id=i; FF(j,K){ I("%d",&info[i].choice[j]); } } //info[0].choice[2] sort(info,info+N,cmp); int curRank=0; info[i].rank=0; F(i,1,N){ if(info[i].Gp==info[i-1].Gp && info[i].Ge==info[i-1].Ge){// info[i].rank=curRank; }else{ curRank++; } info[i].rank=curRank; } FF(i,N) { //学生 bool ok=0; FF(j,K){ //志愿 int c=info[i].choice[j]; //学校 if(quota[c]>0){ quota[c]--; output[c].push_back(info[i].id); lastRank[c]=info[i].rank; ok=1; } else if(quota[c]==0){ if(lastRank[c]==info[i].rank){ output[c].push_back(info[i].id); ok=1; } } if(ok) break; } } //输出每个学校录取的人 FF(i,M){ sort(output[i].begin(),output[i].end()); int sz=output[i].size(); FF(j,sz){ O("%d",output[i][j]); if(j!=sz-1) O(" "); } puts(""); } return 0;}
转载于:https://www.cnblogs.com/TQCAI/p/8579167.html