Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia
Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia
Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Explicaciones a <strong>los</strong> <strong>problemas</strong> South American Regionals 2008 62<br />
void inicializar_jugador(jugador *x){//inicializando todo a cero<br />
for(int i=1;icartas[0][i]=0;<br />
x->cartas[1][i]=0;<br />
x->cartas[2][i]=0;<br />
x->cartas[3][i]=0;<br />
}<br />
x->n_cartas=0;<br />
}<br />
void insertar_carta(jugador *x,int p,int c){<br />
x->cartas[p][c]++;<br />
x->n_cartas++;<br />
}<br />
int max_por_numero(jugador *x,int p){//seleccionando la mayor carta en relacion al pal<br />
for(int i=13;i>=1;i--)if(x->cartas[p][i]>0)return i;<br />
return -1;<br />
}<br />
int max_por_palo(jugador *x,int c){//seleccionando la mayor carta en relacion al numer<br />
if(x->cartas[3][c]>0)return 3;<br />
else if(x->cartas[2][c]>0)return 2;<br />
else if(x->cartas[1][c]>0)return 1;<br />
else if(x->cartas[0][c]>0)return 0;<br />
else return -1;<br />
}<br />
void <strong>de</strong>scartar_carta(jugador *x,int p,int c){//<strong>de</strong>scartando carta<br />
x->cartas[p][c]--;<br />
x->n_cartas--;<br />
if(c==12)direccion*=(-1); //Reina invierte el sentido <strong>de</strong>l juego<br />
perdio_su_turno=(c==1||c==7||c==11);//as siete o jack<br />
actual.first=p; //actualizamos la carta a ser <strong>de</strong>scargada<br />
actual.second=c;<br />
}<br />
bool intentando_<strong>de</strong>scartar(jugador *x,int p1,int c1,int p2,int c2){<br />
//<strong>de</strong>vuelve true si es que se pudo<br />
if(c1!=-1||c2!=-1){ //<strong>de</strong>scartar una carta<br />
if(c1>c2)<strong>de</strong>scartar_carta(x,p1,c1);//primero por numero<br />
else if(c1==c2){ //<strong>de</strong>spues por palo<br />
if(p1>p2)<strong>de</strong>scartar_carta(x,p1,c1);<br />
else <strong>de</strong>scartar_carta(x,p2,c2);<br />
}else <strong>de</strong>scartar_carta(x,p2,c2);<br />
return true;<br />
}return false;<br />
}<br />
void resuelva(){<br />
jugador jugadores[p];<br />
int carta,sw=0,p1,p2,c1,c2;<br />
char palo;