大家好啊,这里是Cyber Striver的博客。今天我继续为大家带来PAT乙级的题解。
目录
题目
题解
思路
经验总结
题目
题解
#include
#include
typedef struct
{
int test_num;
int vq;
int iq;
}student;
int cmp(const void* a, const void* b)
{
student c = *(student*)a;
student d = *(student*)b;
int ds = (d.iq + d.vq) - (c.iq + c.vq);
if(ds != 0)
return ds;
else if (d.vq-c.vq!=0)
return d.vq - c.vq;
else
return c.test_num - d.test_num;
}
int main()
{
int n = 0, low = 0, high = 0,i=0,max=0;
int f = 0, s = 0, t = 0, l = 0;
scanf("%d%d%d", &n, &low, &high);
student a[100000];
for (i = 0; i < n; i++)
scanf("%d%d%d", &a[i].test_num, &a[i].vq, &a[i].iq);
student fir[100000], sec[100000], thi[100000], last[100000];
for (i = 0; i < n; i++)
{
if (a[i].vq >= high && a[i].iq >= high)
{
fir[f].test_num = a[i].test_num;
fir[f].vq =a[i].vq;
fir[f].iq = a[i].iq;
f++;
continue;
}
if (a[i].vq >= high && a[i].iq < high&&a[i].iq>=low)
{
sec[s].test_num = a[i].test_num;
sec[s].vq = a[i].vq;
sec[s].iq = a[i].iq;
s++;
continue;
}
if (a[i].vq < high && a[i].iq < high&& a[i].vq >=low&& a[i].iq>=low&& a[i].vq >=a[i].iq)
{
thi[t].test_num = a[i].test_num;
thi[t].vq = a[i].vq;
thi[t].iq = a[i].iq;
t++;
continue;
}
if (a[i].vq >= low && a[i].iq >= low)
{
last[l].test_num = a[i].test_num;
last[l].vq = a[i].vq;
last[l].iq = a[i].iq;
l++;
continue;
}
}
qsort(fir, f, sizeof(fir[0]), cmp);
qsort(sec, s, sizeof(fir[0]), cmp);
qsort(thi, t, sizeof(fir[0]), cmp);
qsort(last, l, sizeof(fir[0]), cmp);
printf("%dn", f + s + t + l);
for (i = 0; i < f; i++)
printf("%d %d %dn", fir[i].test_num, fir[i].vq, fir[i].iq);
for (i = 0; i < s; i++)
printf("%d %d %dn", sec[i].test_num, sec[i].vq, sec[i].iq);
for (i = 0; i < t; i++)
printf("%d %d %dn", thi[i].test_num, thi[i].vq, thi[i].iq);
for (i = 0; i < l; i++)
{
printf("%d %d %d", last[i].test_num, last[i].vq, last[i].iq);
if (i != l-1)
printf("n");
}
return 0;
}
思路
先码住,这篇题解收获多多,后面写。
经验总结
本次博客到这里就结束了,如果你觉得我的文章还不错的话,请给我多多点赞评论哦!



