fbpx

Problema #2916 – triviador – Rezolvari PBInfo

de Mihai-Alexandru

Elevii clasei a V-a au fost provocați de către colegii lor de la alte școli să participe la concursul TRIVIADOR. Într-o echipă participă exact trei elevi care trebuie să răspundă la întrebări de cultură generală, obținând punctaje individuale. Punctajul unei echipe este suma punctajelor obținute de către membrii acesteia.

Cerința

Date n, numărul de echipe și punctajele individuale ale membrilor fiecăreia, să se determine cele mai mari două punctaje diferite, obținute de către echipele participante. Dacă nu există două punctaje diferite, se va afișa mesajul TOTI SUNT CASTIGATORI

Date de intrare

Fișierul de intrare triviador.in conține pe prima linie n, numărul de echipe și pe următoarele n linii, câte trei numere separate printr-un spațiu, reprezentând punctajele celor trei membri ai fiecărei echipe.

Date de ieșire

Fișierul de ieșire triviador.out va conţine pe prima linie două valori, în ordine descrescătoare, reprezentând cele mai mari două punctaje diferite obținute de către echipele participante sau mesajul TOTI SUNT CASTIGATORI dacă nu sunt două valori maxime diferite.

Restricții și precizări

  • 2 ≤ n ≤ 10000
  • 0 ≤ punctaj ≤ 100000

Exemplul 1:

triviador.in

5
7 2 5
1 4 2
3 3 7
0 9 5
6 2 2

triviador.out

14 13

Explicație

Echipele obțin următoarele punctaje: 14=7+2+5, 7=1+4+2, 13=3+3+7, 14=0+9+5, 10=6+2+2. Cele două punctaje maxime diferite sunt 14 13.

Exemplul 1:

triviador.in

3
2 2 3
1 0 6
4 1 2

triviador.out

TOTI SUNT CASTIGATORI

Explicație

Echipele obțin punctaje egale cu 7 și se va afișa TOTI SUNT CASTIGATORI.

#include <bits/stdc++.h>

using namespace std;

ifstream cin("triviador.in");
ofstream cout("triviador.out");

int s[10001];

int main()
{
    int n;
    cin >> n;
    for(int i = 1; i <= n; ++i)
    {
        int x, y, z;
        cin >> x >> y >> z;
        s[i - 1] = x + y + z;
    }
    sort(s, s + n);
    bool ok = true;
    int max1 = 0, max2 = 0;
    for(int i = 1; i < n; ++i)
    {
        if(s[i] != s[i - 1])
            ok = false;
    }
    if(ok)
        cout << "TOTI SUNT CASTIGATORI";
    else
    {
        for(int i = n - 1 ; i >= 0 ; --i)
        {
            if(max1 == 0 && max2 == 0)
                max1 = s[i];
            else if(max1 != 0 && max2 == 0)
            {
                if(s[i] > max2 && s[i] != max1)
                    max2=s[i];
            }
        }
        cout << max1 << " " << max2;
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa