题目传送门:http://codeforces.com/contest/733/problem/D
思路:其实这题挺简单的,当时是过于自信导致错了n发。
代码如下:
#include <iostream>
#include <algorithm>
#include <cstring>
#include <stdio.h>
#include <string>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <bitset>
#include <cstdlib>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define ll long long
#define ull unsigned long long
#define mem(n,v) memset(n,v,sizeof(n))
#define MAX 100005
#define MAXN 105
#define PI 3.1415926
#define E 2.718281828459
#define opnin freopen("input.txt","r",stdin)
#define opnout freopen("output.txt","w",stdout)
#define clsin fclose(stdin)
#define clsout fclose(stdout)
#define haha1 cout << "haha1"<< endl
#define haha2 cout << "haha2"<< endl
#define haha3 cout << "haha3"<< endl
const int INF = 0x3f3f3f3f;
const ll INFF = 0x3f3f3f3f3f3f3f3f;
const double pi = 3.141592653589793;
const double inf = 1e18;
const double eps = 1e-8;
const ll mod = 1e18;
const ull mx = 133333331;
/**************************************************************************/
struct arr
{
int a[3];
int num;
friend bool operator < (struct arr a,struct arr b){
if(a.a[0] == b.a[0]){
if(a.a[1] == b.a[1])
return a.a[2] > b.a[2];
else return a.a[1] > b.a[1];
}
else return a.a[0] > b.a[0];
}
}ar[MAX];
int main()
{
int n;
cin >> n;
int a[3];
for(int i=0;i<n;i++){
scanf("%d%d%d",&a[0],&a[1],&a[2]);
sort(a,a+3);
ar[i].a[0] = a[2];
ar[i].a[1] = a[1];
ar[i].a[2] = a[0];
ar[i].num = i+1;
}
sort(ar,ar+n);
int Max = 0;
int id_n = 1;
int id_x = -1;
int id_y = -1;
for(int i=0;i<n;i++){
if(ar[i].a[2] > Max){
Max = ar[i].a[2];
id_x = ar[i].num;
}
}
for(int i=1;i<n;i++){
if(ar[i].a[0] == ar[i-1].a[0] && ar[i].a[1] == ar[i-1].a[1]){
if(min(ar[i].a[2] + ar[i-1].a[2],ar[i].a[1]) > Max){
Max = min(ar[i].a[2] + ar[i-1].a[2],ar[i].a[1]);
id_n = 2;
id_x = ar[i-1].num;
id_y = ar[i].num;
}
}
}
cout << id_n << endl;
if(id_n == 1){
cout << id_x << endl;
}
else cout << id_x << ' ' << id_y << endl;
return 0;
}