Ah ouais.
Le code C++, c'est du grand n'importe quoi. Ils lisent les lignes à coups de getline pour découper avec des substr. Là où un simple >> suffit.
Exo poker:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | #include <iostream>
int main ()
{
long somme;
std::cin >> somme;
std::size_t tours;
std::cin >> tours;
long x, y;
for (size_t i=0; i!=tours && std::cin >> x >> y; ++i) {
somme += y - x;
}
std::cout << somme;
}
|
L'utilisation de map est bien inutilement compliquée aussi. J'ai envie de dire que le dev qui a écrit les corrections n'a qu'une connaissance partielle de la lib standard du langage.
J'avais préparé ça, mais contrairement à France-l0l, le compilo n'est pas en mode C++14 (ce n'est pas dit que cela soit juste):
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 | #include <iostream>
#include <map>
#include <string>
#include <vector>
#include <algorithm>
int main ()
{
std::size_t nb_tags;
std::cin >> nb_tags;
typedef std::map< std::string, int> map_t;
map_t map;
for (std::size_t i=0; i!=nb_tags ; ++i) {
std::string tag;
std::cin >> tag;
++map[tag]; // <- pas besoin de if...
}
// J'ai eu la flemme de convertir en vector<map_t::const_iterator> qui aurait été plus efficace
std::vector<std::pair<std::string, int>> v(map.begin(),map.end());
std::sort(v.begin(),v.end(),
[](auto lhs, auto rhs) { // <- pas besoin de laisser le mauvais ordre
return lhs.second > rhs.second;
});
for (std::size_t i=0, N=5; i!=N ; ++i) {
std::cout << v[i].first << ' ' << v[i].second << "\n";
}
}
|
EDIT: des vecteurs et autres grosses structures copiées, des char* juste pour utiliser l'op[] dans le 3e exo. Ouch.