还有20%过不去,大佬给看下。

#include<stdio.h>
struct stu{
    int num;
    int mark;
};
int main(void)
{
    int n,m,i,j,min,max,t;
    struct stu c[5001];
    scanf("%d%d",&n,&m);
    m=m+m/2;
    for(i=0;i<n;i++)
        scanf("%d%d",&c[i].num,&c[i].mark);
    for(i=0;i<n-1;i++)
    {
        max=i;
        for(j=i+1;j<n;j++)
            max=(c[max].mark>=c[j].mark)?max:j;
        if(max!=i)
            c[5000]=c[i],c[i]=c[max],c[max]=c[5000];
    }
    t=c[m].mark;
    for(i=0;c[i].mark>=t;i++)
    {
        min=i;
        for(j=i+1;c[j].mark==c[i].mark;j++)
        min=(c[min].num<=c[j].num)?min:j;
        if(min!=i)
            c[5000]=c[i],c[i]=c[min],c[min]=c[5000];
    }
    printf("%d %d\n",t,i);
    t=i;
    for(i=0;i<t;i++)
        printf("%d %d\n",c[i].num,c[i].mark);
    return 0;
}
全部评论
现在正忙,AC代码,仅供参考。 #include<iostream> #define maxn 5001 using namespace std; int s[maxn],k[maxn]; int main() { int n,m,i,j,xian,shu=0; cin>>n>>m; for(i=1;i<=n;i++) cin>>s[i]>>k[i]; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(k[i]<k[j]) { swap(s[i],s[j]); swap(k[i],k[j]); } for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(k[i]==k[j]&&s[i]>s[j]) { swap(s[i],s[j]); swap(k[i],k[j]); } m=(int)m*1.5; xian=(int)k[m]; cout<<xian<<' '; for(i=1;i<=n;i++) if(k[i]>=xian) shu++; cout<<shu<<endl; for(i=1;i<=n;i++) if(k[i]>=xian) cout<<s[i]<<' '<<k[i]<<endl; return 0; }C++应该也能懂吧?
1 回复 分享
发布于 2020-01-31 13:48
改了下,过了 #include<stdio.h> struct stu{     int num;     int mark; }; int main(void) {     int n,m,i,j,min,max,t;     struct stu c[5005];     scanf("%d%d",&n,&m);     m=m+m/2;     for(i=1;i<=n;i++)         scanf("%d%d",&c[i].num,&c[i].mark);     for(i=1;i<=n-1;i++)     {         max=i;         for(j=i+1;j<=n;j++)             max=(c[max].mark>=c[j].mark)?max:j;         if(max!=i)             c[5005]=c[i],c[i]=c[max],c[max]=c[5005];     }     t=c[m].mark;     for(i=1;c[i].mark>=t;i++)     {         min=i;         for(j=i+1;c[j].mark==c[i].mark;j++)         min=(c[min].num<=c[j].num)?min:j;         if(min!=i)             c[5000]=c[i],c[i]=c[min],c[min]=c[5000];     }     printf("%d %d\n",t,i-1);     t=i;     for(i=1;i<t;i++)         printf("%d %d\n",c[i].num,c[i].mark);     return 0; }
点赞 回复 分享
发布于 2022-01-12 12:48

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务