Lista de discussão da OBI 2001


[Prévia por Data][Próxima por Data]
[Prévia por Assunto][Próxima por Assunto]
[Índice por Data][Índice por Assunto]
[Envie uma nova mensagem para a lista] [Responda esta mensagem]

Algumas soluções



Diogo Satoru Aihara writes:
 > Oi
 > Conversamos hj na hora do almoço sobre a OBI e... por favor, me mande
 > algumas resoluções de exercícios da OBI.
 > 
 > Muito Obrigado
 > 
 > Diogo
 > 
Ai vao algumas resoluções dos exercícios da primeira fase da OBI 2000
(http://olimpiada.dcc.unicamp.br/exemplos.html)

Alfredo

/* bit.c */
#include <stdio.h>
int main()
{
  int valor,i=1,I,J,K,L;
  scanf("%d",&valor);
  while (valor!=0)
        {
          I=valor/50;
          valor=valor%50;
          J=valor/10;
          valor=valor%10;
          K=valor/5;
          valor=valor%5;
          L=valor;
          printf("Teste %d\n",i);
          printf("%d %d %d %d\n",I,J,K,L);
          scanf("%d",&valor);
          i++;
        }
  return 0;
}


/* macaco.c */
int intersec(int x01,int y01, int x02, int y02,
              int x11, int y11, int x12, int y12,
              int *xs0, int *ys0, int *xs1, int *ys1)
{
  if (x01>x11)
    *xs0=x01;
  else
    *xs0=x11;
  if (y01<y11)
    *ys0=y01;
  else
    *ys0=y11;
  if (x02<x12)
    *xs1=x02;
  else
    *xs1=x12;
  if (y02<y12)
    *ys1=y12;
  else
    *ys1=y02;
  if ((*xs0<=*xs1)&&(*ys0>=*ys1))
    return 0;
  return -1;
}

#include <stdio.h>
int main()
{
   int N, X1, Y1, U1, V1, X2, Y2, U2, V2,
     XF,YF,UF,VF, cont=1,nulo,i;
   scanf("%d",&N);
   while (N!=0){
     nulo=0;
     X1=V1=-10000;
     U1=Y1=10000;
     for(i=0;i<N;i++){
       scanf("%d %d %d %d",&X2,&Y2,&U2,&V2);
       if (intersec(X1,Y1,U1,V1,X2,Y2,U2,V2,&XF,&YF,&UF,&VF)==-1)
         nulo=-1;
       X1=XF;Y1=YF;U1=UF;V1=VF;
     }
     printf("Teste %d\n",cont++);
     if (nulo==-1)
       printf("nenhum\n\n");
     else
       printf("%d %d %d %d\n",X1,Y1,U1,V1);
     scanf("%d",&N);
   }
   return 0;
}


/* querm.c */
#include <stdio.h>
#define MAX 10001
void main()
{
  int N, ent[MAX],i,cont=1,resp=-1;
  scanf("%d",&N);
  while (N!=0)
  {
    for(i=0;i<N;i++)
      scanf("%d",&ent[i]);
    resp=-1;
    for(i=0;i<N;i++)
      if (ent[i]==i+1)
        resp=i+1;
    printf("Teste %d\n%d\n", cont++,resp);
    scanf("%d",&N);
  }
}