代码如下:
#include <stdio.h>
#include <stdlib.h>
struct Size
{
long long a;
long long b;
long long c;
long sym;
};
struct Size Sizes[100010];
int cmp(const void *a, const void *b)
{
struct Size x = *(struct Size *)a;
struct Size y = *(struct Size *)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.c - y.c;
}
}
int main()
{
long n, i, ans0, ans1, ans2, h = 0, h1 = 0, h2 = 0;
scanf("%ld", &n);
for (i = 0; i < n; i++)
{
long temp;
scanf("%lld %lld %lld", &Sizes[i].a, &Sizes[i].b, &Sizes[i].c);
Sizes[i].sym = i;
if (Sizes[i].b > Sizes[i].a)
{
temp = Sizes[i].a;
Sizes[i].a = Sizes[i].b;
Sizes[i].b = temp;
}
if (Sizes[i].c > Sizes[i].b)
{
temp = Sizes[i].b;
Sizes[i].b = Sizes[i].c;
Sizes[i].c = temp;
}
if (Sizes[i].b > Sizes[i].a)
{
temp = Sizes[i].b;
Sizes[i].b = Sizes[i].a;
Sizes[i].a = temp;
}
}
qsort(Sizes, n, sizeof(struct Size), cmp);
for (i = 0; i < n; i++)
{
if (Sizes[i].c > h)
{
h = Sizes[i].c;
ans0 = Sizes[i].sym;
}
}
for (i = 0; i < n - 1; i++)
{
if (Sizes[i].a == Sizes[i + 1].a && Sizes[i].b == Sizes[i + 1].b)
{
h2 = Sizes[i].c + Sizes[i + 1].c;
if (h2 > Sizes[i].b)
h2 = Sizes[i].b;
if (h1 < h2)
{
ans1 = Sizes[i].sym;
ans2 = Sizes[i + 1].sym;
h1 = h2;
}
else
continue;
}
}
if (h < h1)
printf("2\n%ld %ld\n", ans2 + 1, ans1 + 1);
else
printf("1\n%ld\n", ans0 + 1);
return 0;
}