Cod sursa(job #1548518)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 10 decembrie 2015 23:51:43
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.12 kb
#include <algorithm>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <utility>
#include <string>
#include <vector>

using namespace std;

struct Elev {
    Elev(string _nume = "", string _liceu = "", int _medie = 0): nume(_nume), liceu(_liceu), medie(_medie) {}

    void setNume(string newNume) { nume = newNume; }
    string getNume() const { return nume; }

    void setLiceu(string newLiceu) { liceu = newLiceu; }
    string getLiceu() const { return liceu; }

    void setMedie(int newMedie) { medie = newMedie; }
    int getMedie() const { return medie; }

    bool operator<(const Elev &arg) { return medie < arg.getMedie(); }

private:
    string nume;
    string liceu;
    int medie;
};

istream& operator>>(istream& f, Elev &arg) {
    string nume;
    string liceu;
    int medie;

    f >> nume >> liceu >> medie;

    arg.setNume(nume);
    arg.setLiceu(liceu);
    arg.setMedie(medie);

    return f;
}

ostream& operator<<(ostream& g, const Elev &arg) {
    g << arg.getNume();
    return g;
}

class Problem2Solver {
    vector <Elev> elevs;

    void Read(istream& f = cin) {
        int n = 0;
        f >> n;

        elevs.resize(n);
        for (int i = 0; i < n; ++ i)
            f >> elevs[i];
    }

    void ComputeAndPrint(ostream& g = cout) {
        int maximum = 0;
        double average = 0;
        for (int i = 0; i < static_cast <int>(elevs.size()); ++ i) {
            if (elevs[i].getMedie() > maximum)
                maximum = elevs[i].getMedie();
            average += elevs[i].getMedie();
        }

        average /= static_cast <int>(elevs.size());

        g << "Media tuturor elevilor este " << average << ".\n";
        g << "Elevii cu cea mai mare nota sunt:\n" << fixed << setprecision(2);
        for (int i = 0; i < static_cast <int>(elevs.size()); ++ i)
            if (elevs[i].getMedie() == maximum)
                g << elevs[i].getNume() << '\n';
    }
public:
    Problem2Solver() {}

    void Solve(istream& f = cin, ostream& g = cout) {
        Read(f);
        ComputeAndPrint(g);
    }
};

class Factorizer {
    int n;
    vector <pair <int, int> > factors;

    void Read(istream& f = cin) {
        f >> n;
    }

    void ComputeAndPrint(ostream& g = cout) {
        for (int i = 2; i <= n; ++ i)
            if (n % i == 0) {
                factors.push_back(make_pair(i, 0));

                while (n % i == 0) {
                    ++ factors.back().second;
                    n /= i;
                }
            }


        g << "Descompunerea lui " << n << " este:\n";
        for (vector <pair <int, int> > :: iterator it = factors.begin(); it != factors.end(); ++ it)
            g << it->first << ' ' << it->second << '\n';
    }

public:
    Factorizer() {}

    void Solve(istream& f = cin, ostream& g = cout) {
        Read(f);
        ComputeAndPrint(g);
    }
};

int main()
{
    ifstream cin("input.txt");
    ofstream cout("output.txt");

    int a, b;
    cin >> a >> b;

    cout << a + b << '\n';

    cin.close();
    cout.close();
    return 0;
}