Seu código está quase certo, o único problema é que você declarou o vetor poslin com tamanho MAX_COL, sendo que deveria ser com tamanho MAX_LIN. Em entradas em que N > 50, o código tentará acessar posições inexistentes no vetor poslin.
Esse é o tipo de erro que poderia ser um Runtime Error, mas acaba sendo um Wrong Answer porque, mesmo fazendo acessos a posições inexistentes no vetor poslin, o código continuou acessando posições válidas de memória, provavelmente a região de memória onde as variáveis vnum, vreal, etc estavam alocadas, e aí ao alterando o valor dessas variáveis acaba gerando uma resposta errada mesmo sem que a execução seja interrompida.