Cod sursa(job #3266588)

Utilizator Lupu_Daniel_24Lupu Daniel Lupu_Daniel_24 Data 9 ianuarie 2025 16:15:38
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.2 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <iostream>
#include <iomanip>
#include <cstring>

using namespace std;


struct Elev {
    char nume[101];
    char prenume[101];
    float media1, media2, media3;
    float mediaGenerala;

   
    float calculeazaMediaGenerala() {
        return (media1 + media2 + media3) / 3.0;
    }
};

int main() {
    int n, p;
    cin >> n >> p;

    Elev elevi[100];  
    float sumaMediilor = 0.0;

    
    for (int i = 0; i < n; i++) {
        cin >> elevi[i].nume >> elevi[i].prenume >> elevi[i].media1 >> elevi[i].media2 >> elevi[i].media3;
        elevi[i].mediaGenerala = elevi[i].calculeazaMediaGenerala();
        sumaMediilor += elevi[i].mediaGenerala;
    }

   
    float mediaClasei = sumaMediilor / n;

    if (p == 1) {
       
        int count = 0;
        for (int i = 0; i < n; i++) {
            if (elevi[i].mediaGenerala >= mediaClasei) {
                count++;
            }
        }
        cout << count << endl;
    } else if (p == 2) {
        
        cout << fixed << setprecision(2) << mediaClasei << endl;

        
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                if (elevi[i].mediaGenerala < elevi[j].mediaGenerala || 
                   (elevi[i].mediaGenerala == elevi[j].mediaGenerala && strcmp(elevi[i].nume, elevi[j].nume) > 0) ||
                   (elevi[i].mediaGenerala == elevi[j].mediaGenerala && strcmp(elevi[i].nume, elevi[j].nume) == 0 && strcmp(elevi[i].prenume, elevi[j].prenume) > 0)) {
                   
                    Elev temp = elevi[i];
                    elevi[i] = elevi[j];
                    elevi[j] = temp;
                }
            }
        }

       
        for (int i = 0; i < n; i++) {
            cout << elevi[i].nume << " " << elevi[i].prenume << " " << fixed << setprecision(2) << elevi[i].mediaGenerala << endl;
        }
    }

    return 0;
}