1015 德才论 (25分)*

strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数

通过

#include <iostream>
#include <string.h>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;

struct node
{
    int id,de,cai;
};

int cmp(node a,node b)
{
    if(a.de+a.cai !=b.de+b.cai)
        return a.de+a.cai>b.de+b.cai;
    else
        return a.de!=b.de?a.de>b.de:a.id<b.id;
}

int main()
{
    int N,L,H,M=0;
    cin>>N>>L>>H;
    vector<node> v[4];
    node tmp;
    for(int i=0;i<N;i++)
    {
        cin>>tmp.id>>tmp.de>>tmp.cai;
        if(tmp.de>=H&&tmp.cai>=H)
        {
            M++;
            v[0].push_back(tmp);
        }
        if(tmp.de>=H&&tmp.cai>=L&&tmp.cai<H)
        {
            M++;
            v[1].push_back(tmp);
        }
        if(tmp.de <H&&tmp.cai <H&&tmp.de >=L&&tmp.cai >=L&&tmp.de >=tmp.cai )
        {
            M++;
            v[2].push_back(tmp);
        }
        if(tmp.de <H&&tmp.de>=L&&tmp.cai>=L&&tmp.de<tmp.cai)
        {
            M++;
            v[3].push_back(tmp);
        }
    }
    cout<<M<<endl;
    for(int i=0;i<4;i++)
    {
        sort(v[i].begin(),v[i].end(),cmp);
        for(int j=0;j<v[i].size();j++)
            printf("%d %d %d\n",v[i][j].id,v[i][j].de,v[i][j].cai);
    }
    return 0;
}

出现段错误

#include <iostream>
#include <string.h>
#include <cmath>
using namespace std;

struct STU
{
    int sno;
    int de;
    int cai;
    int total;
};

int main()
{
    int N,L,H,M=0;
    int ssno;
    int sde,scai;
    int ii[4]={0,0,0,0};
    struct STU stu[4][10005];
    cin>>N>>L>>H;
    for(int i=0;i<N;i++)
    {
        cin>>ssno>>sde>>scai;
        if(sde>=L&&scai>=L)
        {
            M++;
            if(sde>=H&&scai>=H)
            {
                stu[0][ii[0]].sno=ssno;
                stu[0][ii[0]].de=sde;
                stu[0][ii[0]].cai=scai;
                stu[0][ii[0]].total=sde+scai;
                ii[0]++;
            }
            else if(sde>=H&&scai<H)
            {
                stu[1][ii[1]].sno=ssno;
                stu[1][ii[1]].de=sde;
                stu[1][ii[1]].cai=scai;
                stu[1][ii[1]].total=sde+scai;
                ii[1]++;
            }
            else if(sde<H&&scai<H&&sde>=scai)
            {
                stu[2][ii[2]].sno=ssno;
                stu[2][ii[2]].de=sde;
                stu[2][ii[2]].cai=scai;
                stu[2][ii[2]].total=sde+scai;
                ii[2]++;
            }
            else
            {
                stu[3][ii[3]].sno=ssno;
                stu[3][ii[3]].de=sde;
                stu[3][ii[3]].cai=scai;
                stu[3][ii[3]].total=sde+scai;
                ii[3]++;
            }
        }
    }
    int j=0,k=0;
    struct STU s;
    for(int i=0;i<4;i++)
    {
        for(j=0;j<ii[i]-1;j++)
        {
            for(k=0;k<ii[i]-1-j;k++)
            {
            if((stu[i][k].total<stu[i][k+1].total)||(stu[i][k].total==stu[i][k+1].total&&stu[i][k].de<stu[i][k+1].de)||(stu[i][k].total==stu[i][k+1].total&&stu[i][k].de==stu[i][k+1].de&&stu[i][k].sno>stu[i][k+1].sno))
                {
                    s=stu[i][k];
                    stu[i][k]=stu[i][k+1];
                    stu[i][k+1]=s;
                }
            }
        }
    }
    cout<<M<<endl;
    for(int i=0;i<4;i++)
        for(j=0;j<ii[i];j++)
            cout<<stu[i][j].sno<<" "<<stu[i][j].de<<" "<<stu[i][j].cai<<endl;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/QRain/p/12228063.html