每日一WA

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

1.把第12和13行改成“return a.num<b.num;” 2.输入m之后再给plan赋值```cpp #include<bits/stdc++.h> using namespace std; int n,m; int cnt; struct node{ int num,pts; }a[5005]; int line; bool cmp(node a,node b){ if(a.pts!=b.pts)return a.pts>b.pts; return a.num<b.num; } int main(){ cin>>n>>m; int plan=floor(m*1.5); for(int i=1;i<=n;i++){ cin>>a[i].num>>a[i].pts; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ if(i==plan)line=a[i].pts; } for(int i=1;i<=n;i++){ if(a[i].pts>=line)cnt++; } cout<<line<<" "<<cnt<<endl; for(int i=1;i<=cnt;i++){ cout<<a[i].num<<" "<<a[i].pts<<endl; } return 0; } ```
by Handezheng @ 2024-01-26 14:38:32


后面代码你可以忽略
by Handezheng @ 2024-01-26 14:39:21


原因: 1.如果第11行之后没有返回就说明 _a.pts_ 与 _b.pts_ 相等,此时我们从小到大比较num即可 2.定义m后,m为0,此时为plan赋值,plan也会等于0,需要先输入m的值
by Handezheng @ 2024-01-26 14:44:05


|