1
+ #include <stdbool.h>
2
+ #include <stdio.h>
3
+
4
+ bool verification ;
5
+
6
+ int Max (int Tableau [], int Valeur1 , int Valeur2 ) {
7
+ if (Valeur2 < 0 ) return Valeur1 ;
8
+ if (Valeur1 < 0 ) return Valeur2 ;
9
+ if (Tableau [Valeur1 ] > Tableau [Valeur2 ])
10
+ return Valeur1 ;
11
+ else if (Tableau [Valeur1 ] == Tableau [Valeur2 ])
12
+ if (Valeur1 < Valeur2 )
13
+ return Valeur1 ;
14
+ else
15
+ return Valeur2 ;
16
+ else
17
+ return Valeur2 ;
18
+ }
19
+
20
+ int Strict_Max (int Tableau [], int Valeur1 , int Valeur2 ) {
21
+ if (Tableau [Valeur1 ] > Tableau [Valeur2 ])
22
+ return Valeur1 ;
23
+ else if (Tableau [Valeur1 ] == Tableau [Valeur2 ])
24
+ if (verification )
25
+ return -10 ;
26
+ else {
27
+ verification = true;
28
+ return Valeur1 ;
29
+ }
30
+ else
31
+ return Valeur2 ;
32
+ }
33
+
34
+ int main () {
35
+ // T pour Tour(s) et G pour Grenouille(s)
36
+ int Nb_T , Nb_G ;
37
+ scanf (" %d %d" , & Nb_G , & Nb_T );
38
+
39
+ int Gr [Nb_G ];
40
+ for (int G = 0 ; G < Nb_G ; G ++ ) Gr [G ] = 0 ;
41
+
42
+ int GG [Nb_T ];
43
+ for (int T = 0 ; T < Nb_T ; T ++ ) GG [T ] = 0 ;
44
+
45
+ int Frequence [Nb_G ];
46
+ for (int G = 0 ; G < Nb_G ; G ++ ) Frequence [G ] = 0 ;
47
+
48
+ int Gagnante = -10 ;
49
+ for (int T = 1 ; T <= Nb_T ; T ++ ) {
50
+ int G , saut ;
51
+ scanf (" %d %d" , & G , & saut );
52
+ if (T != Nb_T ) {
53
+ Gr [G - 1 ] += saut ;
54
+ for (G = 0 ; G < Nb_G ; G ++ ) GG [T ] = Max (Gr , G , GG [T ]);
55
+ verification = false;
56
+ for (G = 0 ; G < Nb_G ; G ++ ) {
57
+ GG [T ] = Strict_Max (Gr , G , GG [T ]);
58
+ if (GG [T ] < 0 ) break ;
59
+ }
60
+ if (GG [T ] >= 0 ) Frequence [GG [T ]]++ ;
61
+ if (T == Nb_T - 1 ) {
62
+ for (G = 0 ; G < Nb_G ; G ++ ) Gagnante = Max (Frequence , G , Gagnante );
63
+ }
64
+ }
65
+ }
66
+
67
+ if (Gagnante + 1 == -9 )
68
+ printf ("1" );
69
+ else
70
+ printf ("%d" , Gagnante + 1 );
71
+ }
0 commit comments