segunda-feira, 3 de setembro de 2012

Resolução - Botas Perdidas - 2011


Esta é uma questão da primeira fase da maratona de programação de 2011, para sua resolução é necessário que se formem todos os pares possíveis. Antes de tudo imagine dois guada sapatos com espaços para alojar todos os números dos calçados.



Pronto! Tendo em mente este arranjo, basta apenas analisar cada prateleira, observando que o número máximo de pares formados vai ser o menor dos dois. Vamos ao código em C:

#include<stdio.h>

int main () {
    int i, n, tam, D[31], E[31];
    while (scanf("%d", &n)>0) {
        int total=0;
        for (i=0; i<31; i++) D[i]=E[i]=0;
        char pe;
        for (i=0; i<n; i++) {
            scanf ("%d %c", &tam, &pe);
            if(pe=='D') D[tam-30]++;
            if(pe=='E') E[tam-30]++;
        }
        for (i=0; i<31; i++) {
            if (D[i]<=E[i]) total += D[i];
            else total += E[i];
        }
        printf ("%d\n", total);
    }
    return 0;
}

SITE: http://br.spoj.com/problems/BOTAS/

Se isto lhe foi útil não esqueça de agradecer!


Resolução - Questão Guarda Costeira - 2011

Esta é uma questão da primeira fase da maratona de programação de 2011, consiste basicamente em calcular se o barco do fugitivo irá cruzar a linha de limite primeiro. A imagem a Seguir exemplifica melhor:



Assim, poderemos calcular o tempo Tg = S/Vg e Tf = 12/Vf (Tg: tempo que o barco da guarda costeira leva para chegar ao limite, Tf: tempo que o barco do fugitivo leva para chegar ao limine), após feita esta análise podemos constatar que, se o Tg for menor ou igual a Tf o fugitivo será preso, senão estará livre. Visto isso podemos aplicar ao código em C.

#include<stdio.h>
#include<math.h>

int main () {
    int D, Vf, Vg;
    while (scanf ("%d %d %d", &D, &Vf, &Vg)>0) {
         float S, Tg, Tf;
         S = sqrt (pow(D, 2) + 144);
         Tg = S/Vg;
         Tf = 12.0/Vf;
         if (Tg <= Tf) printf("S\n");
         else printf ("N\n");
    }
    return 0;
}

SITE: http://br.spoj.com/problems/GUARDCOS/
Se isto lhe foi útil não esqueça de agradecer!