#include<fstream>
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;

struct palyazat {
    string kiiro, nyertes;
    unsigned long ar;
    float CRI;
};

unsigned long string_to_long(string adat) {
    stringstream ss;
    ss << adat;
    unsigned long eredmeny;
    ss >> eredmeny;
    return eredmeny;
}

float string_to_float(string adat) {
    stringstream ss;
    ss << adat;
    float eredmeny;
    ss >> eredmeny;
    return eredmeny;
}

palyazat sor_darabol(string sor) {
    stringstream ss;
    ss << sor;
    string adat;
    palyazat eredmeny;
    getline(ss, adat, ';'); // ID
    getline(ss, adat, ';'); // Cím
    getline(ss, eredmeny.kiiro, ';'); // Kiíró
    getline(ss, eredmeny.nyertes, ';'); // Nyertes
    getline(ss, adat, ';'); // Ár
    eredmeny.ar = string_to_long(adat);
    getline(ss, adat, ';'); // Konzorciumi tagokra számolt ár
    getline(ss, adat, ';'); // CRI
    eredmeny.CRI = string_to_float(adat);
    return eredmeny;
}

struct palyazatok {
    vector<palyazat> palyazatok;

    void beolvas(string fname) {
        ifstream f(fname);
        if (f.fail())
            cerr << "Nem sikerült megnyitni a fájlt.\n";
        string sor;
        getline(f, sor);
        while(getline(f, sor)) {}
            palyazatok.push_back(sor_darabol(sor));
    }

    void ellenoriz() {
        for(unsigned i = 0; i < 3; i++) {
            cout << palyazatok[i].kiiro << endl
                << palyazatok[i].nyertes << endl
                << palyazatok[i].ar << endl
                << palyazatok[i].CRI << endl << endl;
        }
    }

    struct hanyszor_nyert {
        string cegnev;
        int szamlalo = 0;
    };

    int keres(vector<hanyszor_nyert>& cegek, string keresett_cegnev) {
        for(unsigned i = 0; i < cegek.size(); i++)
            if (cegek[i].cegnev == keresett_cegnev)
                return i;
        return -1;
    }

    void harmadik_feladat() {
        vector<hanyszor_nyert> cegek;
        for (unsigned i = 0; i < palyazatok.size(); i++) {
            cout << i << endl;
            if (palyazatok[i].CRI < 0.1 and palyazatok[i].CRI != -1) {
                int hol_van = keres(cegek, palyazatok[i].nyertes);
                cout << hol_van << endl;
                if (hol_van == -1) {
                    hanyszor_nyert ideig;
                    ideig.cegnev = palyazatok[i].nyertes;
                    cegek.push_back(ideig);
                } else
                    cegek[hol_van].szamlalo++;
            }
        }

        unsigned maximum_ertek = cegek[0].szamlalo;
        unsigned maximum_hely = 0;
        for (unsigned i = 1; i < cegek.size(); i++) {
            if (cegek[i].szamlalo > maximum_ertek) {
                maximum_ertek = cegek[i].szamlalo;
                maximum_hely = i;
            }
        }
        cout << cegek[maximum_hely].cegnev << " cégnek volt a letöbb viszonylag tiszta pályázata.\n";
    }
};

int main() {
    setlocale(LC_ALL, "");
    palyazatok p;
    p.beolvas("budapest_kozbeszerzesek.csv");
    p.ellenoriz();
}
