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