wiele lat programuję w C++ i nie widzę gdzie tu strata czasu i pamięci - czy może o czyś nie wiem ?
a nawet gdyby strata pamięci była, to jakie ma znaczenie zajęcie nawet 1 MB pamięci więcej, gdy masz dostępne 1,5 GB ?
a że dostawałeś błąd - to nic niezwykłego, skoro niedokładnie przeczytałeś treść zadania
mieszanie scanf() i cin to nie jest dobry pomysł