Cod sursa(job #2970446)

Utilizator sandry24Grosu Alexandru sandry24 Data 25 ianuarie 2023 10:03:27
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.31 kb
#include <bits/stdc++.h>
using namespace std;
 
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
#define pb push_back
#define mp make_pair
#define f first
#define s second
    
struct Node {
    string nume, prenume;
    int varsta;
    struct Node *next;
};

Node *r, *p, *u, *v;

void print(Node *h){
    while(h){
        cout << setw(12) << h->nume << ' ' 
        << setw(12) << h->prenume << ' ' 
        << setw(12) << h->varsta << '\n';
        h = h->next;
    }
}

void solve(){
    int n;
    cout << "n = ";
    cin >> n;
    if(!n){
        cout << "Lista este vida\n";
        return;
    }
    p = NULL;
    cout << "Introduceti stiva:\n";
    int maxe = 0;
    for(int i = 0; i < n; i++){
        r = new Node;
        cin >> r->nume >> r->prenume >> r->varsta;
        r->next = p;
        p = r;
        maxe = max(maxe, (int)r->nume.size());
    }
    u = r;
    cout << "Avem lista:\n";
    print(u);
    int ind = 1;
    while(r){
        if(r->varsta % 2 == 0)
            break;
        ind++;
        r = r->next;
    }
    cout << "Locul primului elev cu varsta para = " << ind << '\n';
    cout << "Lungimea maxima a numelui = " << maxe << '\n';
    cout << "Elevii cu nume de lungime maxima:\n";
    r = u;
    ind = 1;
    while(r){
        if(r->nume.size() == maxe){
            //cout << ind << ' ';
            cout << r->nume << ' ' << r->prenume << '\n';
        }
        ind++;
        r = r->next;
    }
    cout << '\n';
    for(r = u; r->next != NULL; r = r->next){
        for(v = r->next; v; v = v->next){
            if(v->varsta > r->varsta){
                swap(v->varsta, r->varsta);
                swap(v->nume, r->nume);
                swap(v->prenume, r->prenume);
            }
            /* daca trebuie invers 
            if(v->nr < r->nr)
                swap(v->nr, r->nr);*/
        }
    }
    cout << "Lista sortata:\n";
    print(u);
    cout << "Varsta maxima = " << u->varsta << '\n';
    int cnt = 0;
    r = u;
    while(r && r->varsta == u->varsta){
        cnt++;
        r = r->next;
    }
    cout << "Elevi cu varsta maxima = " << cnt << '\n';
}
 
int main(){
    //ios::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    //cin >> t;
    while(t--){
        solve();
    }
}