记录编号 588135 评测结果 AAAAAAAAAA
题目名称 Rotate Columns 最终得分 100
用户昵称 Gravatar小金 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2024-05-27 16:34:54 内存使用 0.57 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
struct shu{
    int x,y;
    int z;
}a[500];
int n,m,t,cnt;
bool cmp(shu c,shu d)
{
    return c.z>d.z;
} 
int p(int c,int d,int e,int f)
{
    if(a[c].y==a[d].y&&a[e].y==a[f].y)
    {
        if((abs(a[c].x-a[d].x)==1||abs(a[c].x-a[d].x)==3)&&abs(a[e].x-a[f].x)==2)
        {
            return 1;
        }
        if((abs(a[e].x-a[f].x)==1||abs(a[e].x-a[f].x)==3)&&abs(a[c].x-a[d].x)==2)
        {
            return 1;
        }
    }
    if(a[c].y==a[e].y&&a[d].y==a[f].y)
    {
        if((abs(a[c].x-a[e].x)==1||abs(a[c].x-a[e].x)==3)&&abs(a[d].x-a[f].x)==2)
        {
            return 1;
        }
        if((abs(a[d].x-a[f].x)==1||abs(a[d].x-a[f].x)==3)&&abs(a[c].x-a[e].x)==2)
        {
            return 1;
        }
    }
    if(a[c].y==a[f].y&&a[d].y==a[e].y)
    {
        if((abs(a[c].x-a[f].x)==1||abs(a[c].x-a[f].x)==3)&&abs(a[d].x-a[e].x)==2)
        {
            return 1;
        }
        if((abs(a[d].x-a[e].x)==1||abs(a[d].x-a[e].x)==3)&&abs(a[c].x-a[f].x)==2)
        {
            return 1;
        }
    }
    return 0;
}
int main()
{
    freopen("happygameT1.in","r",stdin);
    freopen("happygameT1.out","w",stdout);
    scanf("%d",&t);
    while(t--)
    {
        memset(a,0,sizeof(a));
        cnt=0;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cnt++;
                scanf("%d",&a[cnt].z);
                a[cnt].x=i;
                a[cnt].y=j;
            }
        }
        sort(a+1,a+cnt+1,cmp);
        int ans=0;
        if(n<=3)
        {
            for(int i=1;i<=n;i++)
            {
                ans+=a[i].z;
            }
            printf("%d\n",ans);
        }
        else
        {
            if(p(1,2,3,4)==1)
            {
                ans=a[1].z+a[2].z+a[3].z;
                int i=5;
                while(p(1,2,3,i)==1)
                {
                    i++;
                }
                ans+=a[i].z;
                printf("%d\n",ans);
            }
            else
            {
                ans=a[1].z+a[2].z+a[3].z+a[4].z;
                printf("%d\n",ans);
            }
        }
    }
    return 0;
}