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
- Subject: Algumas soluções
- From: Alfredo Goldman <gold@ime.usp.br>
- Date: Tue, 08 May 2001 07:37:47 -0300
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);
}
}