1 条题解

  • 0
    @ 2025-10-10 19:52:16

    C++ :

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <iomanip>
    #include <iostream>
    using namespace std;
    struct info
    {
    	int id;
    	int tot;
    	int zhcn;
    };
    info score[301];
    int n;
    void infoget(int id);
    bool infocomp(info,info);
    void infoswap(int,int);
    void qsort(int l,int r);
    
    int main()
    {
    	cin>>n;
    	for (int i = 1;i <= n;i++) infoget(i);
    	qsort(1,n);
    	for (int ccc = 1;ccc <= 5;ccc++)
    		cout<<score[ccc].id<<" "<<score[ccc].tot<<endl;
    	return 0;
    }
    void infoget(int id)
    {
    	int a,b,c;
    	cin>>a>>b>>c;
    	score[id].id = id;
    	score[id].zhcn = a;
    	score[id].tot = a + b + c;
    	return;
    }
    void qsort(int l,int r)
    {
    	int i = l,j = r;
    	info mid;
    	mid = score[(l + r) / 2];
    	do
    	{
    		while (infocomp(score[i],mid))i++;
    		while (infocomp(mid,score[j]))j--;
    		if (i <= j)
    		{
    			infoswap(i,j);
    			i++;
    			j--;
    		}
    	}
    	while (i <= j);
    	if (l < j) qsort(l,j);
    	if (i < r) qsort(i,r);
    	return;
    }
    bool infocomp(info a,info b)
    {
    	if (a.tot > b.tot)
    		return true;
    	else if (a.tot == b.tot)
    		if (a.zhcn > b.zhcn)
    			return true;
    		else if (a.zhcn == b.zhcn)
    			if (a.id < b.id)
    				return true;
    	return false;
    }
    void infoswap(int id1,int id2)
    {
    	info p;
    	p=score[id1];
    	score[id1] = score[id2];
    	score[id2] = p;
    	return;
    }
    
    

    Pascal :

    var
    i,n,jh,j:longint;
    xh,zf,yw,sx,xy:array[1..1000] of longint;
    begin
    readln(n);
    xh[1]:=1;
    read(yw[1],sx[1],xy[1]);
    zf[1]:=yw[1]+sx[1]+xy[1];
    for i:=2 to n do
    begin
    xh[i]:=i;
    read(yw[i],sx[i],xy[i]);
    zf[i]:=yw[i]+sx[i]+xy[i];
    end;
    for j:=1 to n-1 do
    for i:=1 to n-j do
    begin
    if zf[i]<zf[i+1] then
    begin
    jh:=xh[i]; xh[i]:=xh[i+1]; xh[i+1]:=jh;
    jh:=yw[i]; yw[i]:=yw[i+1]; yw[i+1]:=jh;
    jh:=sx[i]; sx[i]:=sx[i+1]; sx[i+1]:=jh;
    jh:=xy[i]; xy[i]:=xy[i+1]; xy[i+1]:=jh;
    jh:=zf[i]; zf[i]:=zf[i+1]; zf[i+1]:=jh;
    end;
    if zf[i]=zf[i+1] then
    if yw[i]<yw[i+1] then
    begin
    jh:=xh[i]; xh[i]:=xh[i+1]; xh[i+1]:=jh;
    jh:=yw[i]; yw[i]:=yw[i+1]; yw[i+1]:=jh;
    jh:=sx[i]; sx[i]:=sx[i+1]; sx[i+1]:=jh;
    jh:=xy[i]; xy[i]:=xy[i+1]; xy[i+1]:=jh;
    jh:=zf[i]; zf[i]:=zf[i+1]; zf[i+1]:=jh;
    end
    else
    if yw[i]=yw[i+1] then
    if xh[i]>xh[i+1] then
    begin
    jh:=xh[i]; xh[i]:=xh[i+1]; xh[i+1]:=jh;
    jh:=yw[i]; yw[i]:=yw[i+1]; yw[i+1]:=jh;
    jh:=sx[i]; sx[i]:=sx[i+1]; sx[i+1]:=jh;
    jh:=xy[i]; xy[i]:=xy[i+1]; xy[i+1]:=jh;
    jh:=zf[i]; zf[i]:=zf[i+1]; zf[i+1]:=jh;
    end
    end;
    for i:=1 to 5 do
    writeln(xh[i],' ',zf[i]);
    end.
    
    • 1

    信息

    ID
    1059
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者