¿Dices que el error te da aqui?
Código:
const size_t n = sizeof v / sizeof *v;
random_shuffle(v, v + n);
Pues si, el error es que el primer parametro de la funcion "random_shuffle" no puede ser
v y por consiguiente el segundo no puede ser
v+n, tiene que ser algo asi:
Código:
random_shuffle(v.begin(), v.begin() + n);
Otro error que tienes es el siguiente:
Cita: const size_t n = sizeof v / sizeof *v;
Si lo que quieres es la cantidad de elementos la puedes obtener con el metodo "size()" del "vector"
Código:
size_t n = v.size();
random_shuffle(v.begin(), v.end());
Si te fijas no puse begin()+n porque el puntero al ultimo elemento lo obtienes directamente con el metodo "end()" de la platilla vector.
Te recomiendo que te consigas un buen manual de la STL para que te alcare un poco mas las dudas y aproveches toda su potencia.
Por cierto, no probe el resto del codigo, corrige lo que te mencione y despues nos comentas que tal te fue.
Saludos