社区讨论

C++不用sort和结构体的结果。。。

P1068[NOIP 2009 普及组] 分数线划定参与者 4已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mi862j32
此快照首次捕获于
2025/11/21 09:13
4 个月前
此快照最后确认于
2025/11/21 09:13
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[5001],b[5001],i,j,m=1,n,k,p;
void qsort2(int l,int r)
{
    int i=l,j=r,mid=a[(l+r)/2];
    while(i<=j)
    {
        while(a[i]<mid) i++;
        while(a[j]>mid) j--;
        if(i<=j)
        {
            swap(a[i],a[j]);
            swap(b[i],b[j]);
            i++;
            j--;
        }
    }
    if(l<j) qsort2(l,j);
    if(i<r) qsort2(i,r);
}
void qsort1(int l,int r)
{
    int i=l,j=r,mid=b[(l+r)/2];
    while(i<=j)
    {
        while(b[i]>mid) i++;
        while(b[j]<mid) j--;
        if(i<=j)
        {
            swap(a[i],a[j]);
            swap(b[i],b[j]);
            i++;
            j--;
        }
    }
    if(l<j) qsort1(l,j);
    if(i<r) qsort1(i,r);
}
int main()
{
    cin>>n>>k;
    for(i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];	
    }
    qsort1(1,n);
    int k1=1;
    int p1=b[1];
    for(i=1;i<=n;i++)
    {
        if(b[i]==p1) k1++;
        else
        {
            if(k1>=2)qsort2(i-k1-1,i-1);
            k1=1;
            p1=b[i];
        }
    }
    k=k*15/10;
    p=b[k];
    while(1)
    {
        if(b[k+1]!=p)
        {
            k++;
        }
        else break;
    }
    cout<<p<<" "<<k<<endl;
    for(i=1;i<=k;i++) cout<<a[i]<<" "<<b[i]<<endl;
    return 0; 
 } 
潇潇洒洒70多行(该代码解决完整,但只能得10分,所以我劝你们善良

回复

3 条回复,欢迎继续交流。

正在加载回复...