Untitled

 avatar
unknown
c_cpp
2 years ago
1.4 kB
6
Indexable
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <iomanip>
#include <math.h>
#include<set>
#include<map>
#include<sstream>
using namespace std;
int cnt = 0;
struct HocSinh {
    string Ma;
    string HoTen;
    double d1, d2, d3, d4, d5, d6, d7, d8, d9, d10;
    double DiemTB;
    friend istream& operator >> (istream& in, HocSinh &x) {
        cnt++;
        string res = to_string(cnt);
        while (res.size() < 2) {
            res = "0" + res;
        }
        x.Ma = "HS" + res;
        getline(in, x.HoTen);
        in >> x.d1 >> x.d2 >> x.d3 >> x.d4 >> x.d5 >> x.d6 >> x.d7 >> x.d8 >> x.d9 >> x.d10;
        x.DiemTB = (2 * x.d1 + 2 * x.d2 + x.d3 + x.d4 + x.d5 + x.d6 + x.d7 + x.d8 + x.d9 + x.d10) / 12;
        return in;
    }
    friend ostream& operator << (ostream& out, HocSinh x) {
        out << x.Ma << " " << x.HoTen << " " << fixed << setprecision(1) << x.DiemTB << endl;
        return out;
    }
};
bool cmp(HocSinh a, HocSinh b) {
    if (a.DiemTB != b.DiemTB) {
        return a.DiemTB > b.DiemTB;
    }
    return a.Ma < b.Ma;
}
int main() {
    int n;
    cin >> n;
    vector<HocSinh>v;
    HocSinh x;
    while (n--) {
        cin.ignore();
        cin >> x;
        v.push_back(x);
    }
    sort(v.begin(), v.end(), cmp);
    for (auto it : v) {
        cout << it;
    }
}
Editor is loading...
Leave a Comment