蒟蒻水红写炸了悬2关求助

P1068 [NOIP2009 普及组] 分数线划定

看出来了
by I_am_AKed_by_NOI @ 2023-09-12 23:07:18


@[zhangmingsheng3521](/user/765461) 因为你是从小到大排序的,所以第 $m\times 1.5$ 名应该是 $n- m\times 1.5+1$ 名。
by I_am_AKed_by_NOI @ 2023-09-12 23:08:43


还有,输出是从大到小,所以要倒序循环。
by I_am_AKed_by_NOI @ 2023-09-12 23:10:15


```cpp #include"bits/stdc++.h" using namespace std; struct k { int score; int num; } a[5003]; int main() { int n,m,x,ans=0; scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) { scanf("%d",&a[i].num); scanf("%d",&a[i].score); } for (int i=1;i<=n;i++) { for (int j=1;j<n;j++) { if (a[i].score<a[j].score) { x=a[i].score; a[i].score=a[j].score; a[j].score=x; x=a[i].num; a[i].num=a[j].num; a[j].num=x; } if (a[i].score==a[j].score&&a[i].num>a[j].num) { x=a[i].num; a[i].num=a[j].num; a[j].num=x; } } } int tmp=m*1.5; x=a[n-tmp+1].score; //刚才有说 printf("%d",x); printf(" "); for (int i=1;i<=n;i++) { if (a[i].score>=x) { ans++; } } printf("%d\n",ans); for(int i=n;i>=1;i--) // 这里要改成倒序循环 { if (a[i].score>=x) { printf("%d ",a[i].num); printf("%d\n",a[i].score); } //return 0; 这里不用加 return 0 的,毕竟要全部输出完才结束 } } ``` 代码修改如下,已经 AC。
by I_am_AKed_by_NOI @ 2023-09-12 23:12:23


有一份输出要从大到小的,需修改循环 for(int i=n;i>=1;i--)
by Sreffial @ 2023-09-12 23:25:33


@[I_am_AKed_by_NOI](/user/807853) 谢谢!1关注已给,第二个等会上电脑拿小号补上
by zhangmingsheng3521 @ 2023-09-13 21:00:04


|