To prawda, a nawet więcej: 
2^31 * 2 ^31 < long long int
ale to nie znaczy, że nie miałeś tam błędu. Npisz sobie programi, podstaw różne wartości,potestój a wtedy możemy podyskutować
Np coś takiego:
int a = 1000000000, b = 1000000000;
[unsigned] long long c;
c = a* b;
cout << c << endl; // pewnie nie wiesz czemu to jest źle? Napisz programik i potestuj
AD 2
Czy ja gdziekolwiek wspominałem o odejmowaniu czy dzieleniu?Może tylko, że dwa razy minus to plus, bo to miałeś też zrypane.
AD 3
Nie ma za co, ale błędów było trochę więcej, a nie tylko samo wczytywanie. Wczytywanie nie zaważyło, ale przepełniło czare. 
PS
A wstawienie wszędzie typu long long może spowodować tle w innych zadaniach, więc trzeba nauczyć się ich oszczędnego i uzasadnionego [tam gdzie są faktycznie potrzebne] używania.