# PBinfo #1013 – Aniversari – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Se dau datele de naștere a n persoane, numerotate de la 1 la n, în forma an luna zi. Să se determine numărul de ordine al celei mai tinere și al celei mai în vârstă persoană dintre cele date.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n triplete de numere naturale a l z, reprezentând anul, luna și ziua de naștere a fiecărei persoane.

Date de ieșire
Programul va afișa pe ecran două numere p q, reprezentând numărul de ordine al celei mai tinere, respectiv al celei mai în vârstă persoană.

Restricții și precizări

1 ≤ n ≤ 1000
cele n date calendaristice sunt corecte
dacă există două sau mai multe persoane cele mai tinere (în vârstă) se va afișa numărul de ordine mai mic

Exemplu:
Intrare

5
1998 5 26
1987 12 18
1987 9 25
2015 1 16
2015 1 8
Ieșire

4 3

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
struct data{
	int an , luna , zi;
};
int data_cmp(data x, data y)
{
	//returneaza  0 daca datele sunt egale
	//			  1 daca x > y
	//			 -1 daca x < y
	if(x.an < y.an)
		return -1;
	if(x.an > y.an)
		return 1;
	if(x.luna < y.luna)
		return -1;
	if(x.luna > y.luna)
		return 1;
	if(x.zi < y.zi)
		return -1;
	if(x.zi > y.zi)
		return 1;
	return 0;
}
void citire(data & d)
{
	cin >> d.an >> d.luna >> d.zi;
}
int main()
{
	int n, p, q;
	data dmin, dmax, d;
	cin >> n;
	citire(d);
	dmin = dmax = d;
	p = q = 1;
	for(int i = 2 ; i <= n ; i ++)
	{
		citire(d);
		if(data_cmp(d, dmin) < 0)
			dmin = d, q = i;
		if(data_cmp(d, dmax) > 0)
			dmax = d, p = i;
	}
	cout << p << " " << q;
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1013)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1013/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1013/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
