难受,做出来全WA了

题目描述
让你构造一个结构体,包含(int a,int b,int c). 现有 n 个结构体,请输出满足以下条件的结构体的编号:它的 a,b,c 都是 n 个结构体中最大的. 如果不存在则输出 −1.
输入格式
第一行一个正整数 n 表示结构体数量. 接下来 n 行每行 3 个数,描述一个结构体
输出格式
一行若干个整数,表示编号或 −1.
样例输入
3
1 1 1
3 2 2
3 3 3
样例输出
3
做出来全WA呀

#include<iostream>
using namespace std;
struct test
{
    int a;
    int b;
    int c;
};
int main()
{
    int n;
    cin >> n;
    struct test t[n];
    for(int j=0; j<n; j++)
        cin >>t[j].a>>t[j].b>>t[j].c;
    int maxa=t[0].a;
    int maxb=t[0].b;
    int maxc=t[0].c;
    for(int j=1; j<n; j++)
    {
        if(t[j].a>maxa) maxa=t[j].a;
        if(t[j].b>maxb) maxb=t[j].b;
        if(t[j].c>maxc) maxc=t[j].c;
    }
    for(int j=0; j<n; j++)
        if(t[j].a==maxa&&t[j].b==maxb&&t[j].c==maxc)
        {
            cout <<j+1;
            return 1;
        }
    cout << -1;
    return -1;
}

 

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct S
{
    int a;
    int b;
    int c;
};

istream &operator>>(istream &is, S &s)
{
    is >> s.a >> s.b >> s.c;
    return is;
}

int main()
{
    int n;
    cin >> n;
    vector<S> s(n);
    for (int i = 0; i < n; i++)
        cin >> s[i];
    bool found = false;
    for (auto itr = s.begin(); itr != s.end(); ++itr)
    {
        if (all_of(s.begin(), s.end(), [itr](const auto &s)
                   { return itr->a >= s.a && itr->b >= s.b && itr->c >= s.c; }))
        {
            cout << distance(s.begin(), itr) + 1 << ' ';
            found = true;
        }
    }
    if (!found)
        cout << -1;
    return 0;
}
$ g++ -Wall main.cpp
$ ./a.out
3
1 1 1
3 2 2
3 3 3
3
$ ./a.out
3
1 2 3
2 3 1
3 1 2
-1
$ ./a.out
3
1 1 1
2 2 2
2 2 2
2 3