Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* 1.txt
- 3
- 4
- Katinas Batuotas 4 25
- Katinas Ratuotas 3 59
- Katinas Rainas 4 15
- Katinas Jaunas 6 20
- 2
- Katinas Rudas 6 45
- Katinas Juodas 3 55
- 5
- Katinas Baltas 3 58
- Katinas Gauruotas 4 2
- Katinas Plikas 4 5
- Katinas Ilgas 4 4
- Katinas Trumpas 4 6
- */
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- using namespace std;
- const char duomF[] = "1.txt";
- const char rezF[] = "rez1.txt";
- const int CMax = 51;
- const int CPav = 20;
- struct varzybos
- {
- string pav;
- int min;
- int sek;
- int grupe;
- int dalyviai;
- };
- struct laimetojai
- {
- string pav;
- int min;
- int sek;
- int grupe;
- };
- void skaitymas(varzybos A[] , int &max, int &k)
- {
- ifstream df(duomF);
- char eil[CPav+1];
- int n;
- df >> k;
- for (int i = 0; i < k; i++)
- {
- df >> n;
- for (int j = max; j < n+max; j++)
- {
- df.ignore(80, '\n');
- df.get(eil, CPav);
- A[j].pav = eil;
- df >> A[j].min >> A[j].sek;
- A[j].grupe = i+1;
- A[j].dalyviai = n;
- }
- max += n;
- }
- }
- void rykiavimas(varzybos A[], int max)
- {
- string tempn;
- int tempmin;
- int tempsek;
- for (int i = 0; i < max-1; i++)
- {
- for (int j = i; j < max; j++)
- {
- if (A[i].grupe == A[j].grupe)
- { // Kiekvienos grupes greiciausi.
- if (A[i].min > A[j].min) // Rykiavimas pagal laika (min).
- {
- tempn = A[j].pav; tempmin = A[j].min; tempsek = A[j].sek;
- A[j].pav = A[i].pav; A[j].min = A[i].min; A[j].sek = A[i].sek;
- A[i].pav = tempn; A[i].min = tempmin; A[i].sek = tempsek;
- }
- else if (A[i].min == A[j].min && A[i].sek > A[j].sek) // Rykiavimas pagal sekundes, jeigu minutes sutampa.
- {
- tempn = A[j].pav; tempmin = A[j].min; tempsek = A[j].sek;
- A[j].pav = A[i].pav; A[j].min = A[i].min; A[j].sek = A[i].sek;
- A[i].pav = tempn; A[i].min = tempmin; A[i].sek = tempsek;
- }
- }}}}
- void sprendimas(varzybos A[], laimetojai L[], int max, int &maxLaimetoju, int k)
- {
- for (int i = 0; i < k; i++) // Visu varzybu greiciausi.
- {
- for (int j = 0; j < A[i].dalyviai / 2; j++)
- {
- L[maxLaimetoju].pav = A[j].pav;
- L[maxLaimetoju].min = A[j].min;
- L[maxLaimetoju].sek = A[j].sek;
- maxLaimetoju++;
- }
- }
- }
- int main ()
- {
- varzybos A[CMax]; laimetojai L[CMax];
- int k, n;
- int max = 0, maxLaimetoju = 0;
- skaitymas(A, max, k);
- rykiavimas(A, max);
- sprendimas(A, L, max, maxLaimetoju, k);
- ofstream rf(rezF);
- //for (int i = 0; i < maxLaimetoju; i++) cout << L[i].pav << L[i].min << " " << L[i].sek << endl;
- for (int i = 0; i < maxLaimetoju; i++) rf << L[i].pav << L[i].min << " " << L[i].sek << endl;
- rf.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement