summaryrefslogtreecommitdiff
path: root/cpp/carte.cpp
blob: 697622a814ea565c37ff84b2cf32eec58e8edd32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
INPUT:
18
12 6
11 8
15 8
15 20
13 18
12 23
11 40
15 19
11 25
13 36
15 12
12 18
17 11
23 9
28 22
35 26
11 23
15 12

output:
11 96 */
#include <iostream>
#include <fstream>

using namespace std;

struct punteggioGiocatori
{
	int idGiocatore;
	int punteggio;
} player[100];

int ricercaIdGiocatore(int valore, struct punteggioGiocatori* p);

int main()
{
	ifstream in("input.txt");
	ofstream out("output.txt");
	
	int N, i, pPlayer, j = 0, rID, nVal, t[2];
	bool s;
	in >> N;
	
	for(i = 0; i < N; i++) {
		player[i].idGiocatore = 0;
		player[i].punteggio = 0;
	}
	
	for(i = 0; i < N; i++) {
		in >> pPlayer;
		rID = ricercaIdGiocatore(pPlayer, player);
		if(rID == -1) {
			player[j].idGiocatore = pPlayer;
			in >> player[j].punteggio;
			j++;
		} else {
			in >> nVal;
			player[rID].punteggio += nVal;
		}
	}
	int last = j;
	do {
		s = false;
		for(int k = 0; k < last; k++)
		{
			if(player[k].punteggio < player[k+1].punteggio) {
				t[0] = player[k].idGiocatore;
				t[1] = player[k].punteggio;
			
				player[k].idGiocatore = player[k+1].idGiocatore;
				player[k].punteggio = player[k+1].punteggio;
			
				player[k+1].idGiocatore = t[0];
				player[k+1].punteggio = t[1];
				
				s = true;
			}
	
		}
		
		last--;
	} while(s);
	
	out << player[0].idGiocatore << " " << player[0].punteggio << endl;
	
	in.close();
	out.close();
}

int ricercaIdGiocatore(int valore, struct punteggioGiocatori* p)
{
	int rID = -1;
	for(int i = 0; i < 100; i++)
	{
		if(p[i].idGiocatore == valore) {
			rID = i;
			break;
		}
	}
	
	return rID;
}