Răspuns :
#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdlib>
#include <iomanip>
using namespace std;
ifstream f("intrare.txt");
//Declara vectorul de tari
struct tara{
char nume[100]="";
int minute;
} v[100];
int n;
//FUNCTII
void sorteaza(){
//Sorteaza descrescator dupa durata (Bubble Sort). Daca durata e egala, sorteaza dupa nume
bool ok=1;
while(ok){
ok=0;
for(int i=0;i<n-1;i++){
if(v[i].minute < v[i+1].minute || ((v[i].minute == v[i+1].minute) & (strcmp(v[i].nume, v[i+1].nume)>0))){
swap(v[i], v[i+1]);
ok=1;
}
}
}
}
void sterge_inregrisrare(int x){
//Functie care sterge inregistrarea cu ordin x
//Sterge inregistrare cu numar n
int k;
//Muta elementele mai la stanga
for(k=x;k<n-1;k++) v[k] = v[k+1];
//Micsoreaza contorul
n--;
}
void verifica_timp_valid(){
//Sterge inregistrarile care au sub 10 minute sau peste 60
for(int i=0;i<n;i++){
if(v[i].minute<10 || v[i].minute > 60) sterge_inregrisrare(i);
}
}
void verifica_inregistrari_duble(){
//Verifica si sterge inregistrarile daca apare acelasi nume
int i,j,k;
//Pentru fiecare inregistrare
for(i=0;i<n;i++){
//Verifica daca exista alta inregistreare cu acelasi nume
for(j=i+1;j<n;j++){
if(strcmp(v[i].nume, v[j].nume)==0){
//Sterge inregistarea j
sterge_inregrisrare(j);
}
}
}
}
int calculeaza_durata(){
//Returneaza durata totala a intalnirii
int s=0;
for(int i=0;i<n;i++) s+=v[i].minute;
return s;
}
void verificare_8ore(){
//Functie care verifica si se asigura ca intalnirea dureaza 8 ore
while (calculeaza_durata()>8*60){
sterge_inregrisrare(0);
}
}
int main(){
//Citeste date intrare, acceptand tari cu nume compuse
int i=0;
char x[100];
while(f){
//Citeste grupul de caractere
f >> x;
//Daca nu sunt cifre, adauga grupul de caractere in nume
while(!isdigit(x[0])){
//Copiaza
strcat(v[i].nume, x);
//Adauga spatiu
strcat(v[i].nume, " ");
//Citeste numar urmator
f >> x;
}
//Sterge ultimul spatiu din nume
strcpy(v[i].nume+strlen(v[i].nume)-1,v[i].nume+strlen(v[i].nume));
//Transforma grupul de caractere in numar, adauga la minute;
v[i].minute = atoi(x);
//Treci la inregistarea urmatoare
i++;
}
n=i-1;
sorteaza();
verifica_inregistrari_duble();
verifica_timp_valid();
verificare_8ore();
//Afiseaza rezultat
for(i=0;i<n;i++) cout << v[i].nume << "," << v[i].minute << endl;
//Afiseaza timp discurs
cout << calculeaza_durata() << " " << fixed << setprecision(2) << float(calculeaza_durata())/n;
}