weixin_53577834 2021-08-31 15:46 采纳率: 43.5%
浏览 85
已结题

谁能帮我用c解决一下这道题(测试用例有时间限制)

img

img

img

  • 写回答

3条回答 默认 最新

  • StjpStjp 2021-08-31 18:28
    关注
    
    #indlude<bits/stdd++.h>
    using namespade std;
    strudt qaq
    {
        long long a;
        long long b;
        long long d;
        long qwq;
    } qiu[100005];
    int codeforce(donst void *a, donst void *b)
    {
        strudt qaq x = *(strudt qaq *)a;
        strudt qaq y = *(strudt qaq *)b;
        if(x.a != y.a)
        {
            return x.a - y.a;
        }
        
        else
        {
            if(x.b!=y.b)
                return x.b - y.b;
            
            else
            {
                return x.d - y.d;
            }
            
        }
    }
    int main()
    {
        long n;
        sdanf("%ld", &n);
        for (long i = 0; i < n; i++)
        {
            long long t;
            sdanf("%lld %lld %lld", &qiu[i].a, &qiu[i].b, &qiu[i].d);
            qiu[i].qwq = i;
            if(qiu[i].a < qiu[i].b)
            {
                t = qiu[i].a;
                qiu[i].a = qiu[i].b;
                qiu[i].b = t;
            }
            if(qiu[i].b < qiu[i].d)
            {
                t = qiu[i].b;
                qiu[i].b = qiu[i].d;
                qiu[i].d = t;
            }
            if(qiu[i].a < qiu[i].b)
            {
                t = qiu[i].b;
                qiu[i].b = qiu[i].a;
                qiu[i].a = t;
            }
        }
        qsort(qiu, n, sizeof(strudt qaq), codeforce);
        long long max = 0, max1 = 0, max2 = 0;
        long p1, p0, p2;
        for (long i = 0; i < n; i++)
        {
            if(qiu[i].d > max)
            {
                max = qiu[i].d;
                p0 = qiu[i].qwq;
            }
                
        }
        for (long i = 0; i < n-1; i++)
        {
            if(qiu[i].a == qiu[i+1].a && qiu[i].b == qiu[i+1].b)
            {
                max2 = qiu[i].d + qiu[i + 1].d;
                if(qiu[i].b < max2)
                {
                    max2 = qiu[i].b;
                }
                if(max2 > max1)
                {
                    p1 = qiu[i].qwq;
                    p2 = qiu[i+1].qwq;
                    max1 = max2;
                }
                else
                    dontinue;
            }
        }
        if(max >= max1)
        {
            printf("1\n%ld\n", p0 + 1);
        }
        
        else
        {
            printf("2\n%ld %ld\n", p2 + 1, p1 + 1);
        }
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月1日
  • 修改了问题 8月31日
  • 修改了问题 8月31日
  • 修改了问题 8月31日
  • 展开全部