#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn = 4e4 + 10;
struct stu {
int id, ge, gi, tot, choice[5];
bool operator<(const stu&x)const
{
return tot == x.tot ? ge > x.ge: tot > x.tot;
}
}a[maxn];
struct sch {
int quota;
vector<int>admit;
stu last;
}school[110];
int n, m, k;
int main()
{
scanf("%d%d%d", &n, &m, &k);
for (int i = 0; i < m; i++)scanf("%d", &school[i].quota);
for (int i = 0; i < n; i++)
{
a[i].id = i;
scanf("%d%d", &a[i].ge, &a[i].gi);
a[i].tot = a[i].ge + a[i].gi;
for (int j = 0; j < k; j++)scanf("%d", &a[i].choice[j]);
}
sort(a, a + n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < k; j++)
{
int target_school = a[i].choice[j];
if (school[target_school].quota)
{
school[target_school].admit.push_back(a[i].id);
school[target_school].quota--;
if (school[target_school].quota == 0)
school[target_school].last = a[i];
break;
}
else
{
stu last = school[target_school].last;
if (a[i].ge == last.ge&&a[i].tot == last.tot)
{
school[target_school].admit.push_back(a[i].id);
break;
}
}
}
}
for (int i = 0; i < m; i++)
{
sort(school[i].admit.begin(), school[i].admit.end());
for (int j = 0; j < school[i].admit.size(); j++)
{
printf("%d", school[i].admit[j]);
if (j != school[i].admit.size() - 1)printf(" ");
}
printf("\n");
}
return 0;
}
1080 Graduate Admission(30 分)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 口号#和孩子一起成长 孩子第一个30天目标: 1、坚持早上6点45分起床,晚上9点10分上床睡觉; 2、坚持一次只...
- 你知道你自己想要什么吗?看完这句话,你需要停顿三秒。 我不知道。 可悲的是,我还没有钱。 更可悲的是,我没有努力。...