Resumo: Dados o número de atacantes e de defensores e suas respectivas posições, determinar se ocorre ou não impedimento.
Explicação: A regra de impedimento está explicada no enunciado e como a maioria de nós brasileiros conhecemos as regras de futebol não irei colocar aqui. Uma maneira de resolver isso é ordenando as posições dos jogadores, no código eu explico melhor como fazer isso.
Para resolver esse problema é bom saber:
Usar o qsort da stdlib.h (não sabe ? aprenda aqui)
Vamos ao código:
//Autor: Filipe Areias Névola
//Ano: 2008
//Licensa: Você pode usar e alterar, mas deve manter o Autor
#include <stdio.h> //Biblioteca padrão de entrada e saída
#include <stdlib.h> //Biblioteca onde se encontra o qsort
//Compare da qsort para inteiros
int compare (const void * a, const void * b){
return ( *(int*)a - *(int*)b );
}
//Parte principal do programa
int main(){
/**declarações**/
//número de atacantes, defensores
int a,d;
//iterador
int i;
//vetores para guardar as posições dos jogadores
int at[12],de[12];
/**entrada de dados e processamento**/
//lê número de atacantes e defensores
while(scanf("%d %d",&a,&d)==2 &&a){
//lê as posições dos atacantes
for(i=0;i<a;++i)
scanf("%d",&at[i]);
//lê as posições dos defensores
for(i=0;i<d;++i)
scanf("%d",&de[i]);
//ordena os atacantes, usando qsort
qsort(at,a,sizeof(int),compare);
//ordena os defensores, usando qsort
qsort(de,d,sizeof(int),compare);
/**saída dos dados**/
//Já que eles estão ordenado os primeiros no vetor
//são os mais próximos a linha de fundo do ataque
//então se o atacante mais avançado está mais perto
//da linha de fundo que o segundo defensor ele está
//impedido
if(at[0]<de[1]){
//imprime sim, está impedido
printf("Y\n");
}
else{
//imprime não, não está impedido
printf("N\n");
}
}
}
Alguma dúvida? Pergunte através dos comentários!
Ele está impedido - SPOJ - 2928 IMPEDIDO