Zacząłbym od tego, że niepotrzebnie przechowujesz wszystkie kierunki. Zachód to na wschód tylko z minusem :P Na koniec proste sprawdzenie czy liczba większa od zera.
Wydaje mi się, że błąd jest tutaj:
if(polnoc != 0)cout<<"0 "<<polnoc<<endl;
if(poludnie != 0)cout<<"1 "<<polnoc<<endl;
if(wschod != 0)cout<<"2 "<<polnoc<<endl;
if(zachod != 0)cout<<"3 "<<polnoc<<endl;
czemu zawsze wypisujesz polnoc?
PS:
int t,n,a,b;
czemu nie jakieś sensowne nazwy jak liczba_zestawow, liczba_par itd?