14.01.2013 Views

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

SHOW MORE
SHOW LESS

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;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!