Generalnie jest ok, ale kilka uwag:
int s; //int s = 0;
Zmienne powinny mieć wartości początkowe. W momencie kiedy ich zabraknie w zmiennej mogą znajdować się śmieci (np. jakaś liczba: 81291), a w dalszej części programu modyfikujesz ją (w tym przypadku dodajesz do śmieci kolejne liczby z tablicy) i w rezultacie otrzymasz błędne wyniki.
int ile;
cin >> ile;
int tab[ile];
Nie deklaruj w ten sposób tablicy, w innych kompilatorach niż gcc ta instrukcja nie zadziała (gcc po prostu akceptuje ten zapis i odwala robotę za ciebie). Deklaruj dynamicznie.
int *tab = new int [ile];