6 条题解

  • 1
    @ 2022-7-17 16:18:12
    #include<bits/stdc++.h>
    using namespace std;
    int a[10000000]/*语*/,b[1000000]/*数学*/,c[100000]/*英语*/,p[10000]/*学号*/,k[10000]/*总分*/;
    int main()
    {
    	int n,d;
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i]>>b[i]>>c[i];
    		k[i]=a[i]+b[i]+c[i];
    		p[i]=i;//i为排名
    	}
    	for(int i=1;i<n;i++)
    	{
    		d=i;
    		for(int j=i+1;j<=n;j++)
    		{
    			if(k[d]<k[j])d=j;
    		}
    		if(d!=i)
    		{
    			swap(k[i],k[d]);
    			swap(a[i],a[d]);
    			swap(b[i],b[d]);
    			swap(c[i],c[d]);
    			swap(p[i],p[d]);
    		}
    	}//总分
    	for(int i=1;i<n;i++)
    	{
    		d=i;
    		for(int j=i+1;j<=n;j++)
    		{
    			if(k[d]==k[j]&&a[d]<a[j])d=j;
    		}
    		if(d!=i)
    		{
    			
    			swap(k[i],k[d]);
    			swap(a[i],a[d]);
    			swap(b[i],b[d]);
    			swap(c[i],c[d]);
    			swap(p[i],p[d]);
    		}
    	}//语文
    	for(int i=1;i<n;i++)
    	{
    		d=i;
    		for(int j=i+1;j<=n;j++)
    		{
    			if(k[d]==k[j]&&a[d]==a[j]&&p[d]>p[j])d=j;
    		}
    		if(d!=i)
    		{
    			swap(k[i],k[d]);
    			swap(a[i],a[d]);
    			swap(b[i],b[d]);
    			swap(c[i],c[d]);
    			swap(p[i],p[d]);
    		}
    	}//学号
    	for(int i=1;i<=5;i++)
    	{
    		cout<<p[i]<<" "<<k[i]<<endl;
    	}
    }
    //1 2 3 4 5 6
    
    • 0
      @ 2023-4-11 13:45:36

      结构体 + cmp定义 (可能看起来好看些)

      #include <bits/stdc++.h>
      #define int long long int
      
      using namespace std;
      
      const int N = 310;
      struct node{
          int c,m,e,id;//chinese,math,english
          int sum;
      }s[N];
      int n;
      
      bool cmp(node a1,node a2){
          if(a1.sum != a2.sum) return a1.sum > a2.sum;
          if(a1.c != a2.c) return a1.c > a2.c;
          return a1.id < a2.id;
      }
      
      signed main(){
          scanf("%lld",&n);
          for (int i = 1;i <= n;i ++){
              scanf("%lld %lld %lld",&s[i].c,&s[i].m,&s[i].e);
              s[i].id = i;
              s[i].sum = s[i].c + s[i].m + s[i].e;
          }
          sort(s + 1,s + 1 + n,cmp);
          for (int i = 1;i <= 5;i ++){
              printf("%lld %lld\n",s[i].id,s[i].sum);
          }
          return 0;
      }
      
      • 0
        @ 2023-4-11 9:45:09
        #include <bits/stdc++.h>
        using namespace std;
        const int N=310;
        struct s{
            int n;
            int c;
            int m;
            int e;
            int total;
        }a[N];
        bool cmp(s x,s y)
            {
               if(x.total==y.total){
        		if(x.c==y.c)
        			return x.n<y.n;
        		else
        			return x.c>y.c	;	
        	}
        	else{
        		return x.total>y.total;
        	}
            }
        int main()
        {
            int f;
            cin>>f;
            for(int i=1;i<=f;i++)
            {
                a[i].n=i;
                cin>>a[i].c>>a[i].m>>a[i].e;
                a[i].total=a[i].c+a[i].m+a[i].e;
            }
            sort(a+1,a+f+1,cmp);
            for(int i=1;i<=5;i++)
            {
                cout<<a[i].n<<" "<<a[i].total<<endl;
            }
        
           
        }
        
        • 0
          @ 2022-7-19 10:11:33
          using namespace std;
          struct cj{
          	int Chinese,Math,English;
          	int xh;
          	int total;
          }a[10000];
          bool pm(cj x,cj y){
          	if(x.total==y.total){
          		if(x.Chinese==y.Chinese)
          			return x.xh<y.xh;
          		else
          			return x.Chinese>y.Chinese;		
          	}
          	else{
          		return x.total>y.total;
          	}
          }
          int main(){
          	int n;
          	cin>>n;
          	for(int i=1;i<=n;i++)
          	{
          		cin>>a[i].Chinese>>a[i].Math>>a[i].English;
          		a[i].xh=i;
          		a[i].total=a[i].Chinese+a[i].Math+a[i].English;
          	}
          	sort(a+1,a+n+1,pm);
          	for(int i=1;i<=5;i++){
          		cout<<a[i].xh<<" "<<a[i].total;
          		cout<<endl;
          	}
          	return 0;
          }
          
          • 0
            @ 2022-7-17 19:15:45
            #include <bits/stdc++.h>
            using namespace std;
            int main ()
            {
            	int n;
            	cin>>n;
            	
            	int yw[10000],sx[100000],yy[10000],zf[100000],a[10000];
            	for (int i=1;i<=n;i++)//所有数组数据从1开始 
            	{
            		cin>>yw[i]>>sx[i]>>yy[i];
            		zf[i]=yw[i]+sx[i]+yy[i];
            		a[i]=i;
            	}
            	
            	for (int i=1;i<=n;i++)
            	{
            		for (int j=n;j>i;j--)
            		{
            			if (zf[j]>zf[j-1])
            			{
            				swap(zf[j],zf[j-1]);
            				swap(yw[j],yw[j-1]);
            				swap(sx[j],sx[j-1]);
            				swap(yy[j],yy[j-1]);
            				swap(a[j],a[j-1]);
            			}
            			if (zf[j]==zf[j-1])
            			{
            				if (yw[j]>yw[j-1])
            				{
            					swap(zf[j],zf[j-1]);
            					swap(yw[j],yw[j-1]);
            					swap(sx[j],sx[j-1]);
            					swap(yy[j],yy[j-1]);
            					swap(a[j],a[j-1]);
            				}
            			}
            		}
            	}
            	
            	for (int k=1;k<=5;k++)
            		cout<<a[k]<<" "<<zf[k]<<endl;
            	return 0;
             }
            
            • 0
              @ 2022-7-17 18:44:22
              using namespace std;
              const int N=10000;
              int n[N],m[N],k[N],f[N],j[N];
              int main()
              {
              	int a;
              	cin>>a;
              	for(int i=1;i<=a;i++)
              	cin>>n[i]>>m[i]>>k[i];
              	
              	for(int i=1;i<=a;i++)
              	{
              		f[i]=n[i]+m[i]+k[i];
              	}
              	
              	for(int i=1;i<=a;i++)
              		j[i]=i;
              
              	for(int i=1;i<=10000;i++)
              	{
              		for(int u=1;u<=a-1;u++)
              		{
              			if(f[u]<f[u+1])
              			{
              				swap(f[u],f[u+1]);
              				swap(j[u],j[u+1]);
              				swap(n[u],n[u+1]);
              			}
              			else if(f[u]==f[u+1])
              			{
              				if(n[u]<n[u+1])
              				{
              				swap(j[u],j[u+1]);
              				swap(n[u],n[u+1]);
              			}
              				else if(n[u]==n[u+1])
              				{
              					if(j[u]>j[u+1])
              					{
              					swap(j[u],j[u+1]);
              				}
              				}
              			}
              		}
              	}
              	if(a>=5)
              	{
              	for(int i=1;i<=5;i++)
              	cout<<j[i]<<" "<<f[i]<<endl;
              }
                  else if(a<5)
                  {
                  	for(int i=1;i<=a;i++)
                  	cout<<j[i]<<" "<<f[i]<<endl;
              	}
              	return 0;
              }
              
              • 1

              信息

              ID
              303
              时间
              1000ms
              内存
              128MiB
              难度
              4
              标签
              递交数
              239
              已通过
              111
              上传者