Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct suspeito{
- int codigo;
- int instante;
- int graulatitude;
- int minutolatitude;
- int segundolatitude;
- int graulongitude;
- int minutolongitude;
- int segundolongitude;
- };
- struct suspeito informacao[10000];
- int PesquisaBinaria(int n, struct suspeito informacao[], int i, int j)
- {
- if (i > j)
- return -1; // o intervalo i..j é vazio
- int m = (i + j) / 2; // ponto médio do intervalo
- if (n < informacao[m].codigo)
- // restringe a pesquisa ao intervalo i..m - 1
- return PesquisaBinaria(n, informacao, i, m - 1);
- if (n > informacao[m].codigo)
- // restringe a pesquisa ao intervalo m + 1..j
- return PesquisaBinaria(n, informacao, m + 1, j);
- // n == v[m]
- return m;
- }
- int compare(const void *p1, const void *p2)
- {
- const struct informacoes *elem1 = (struct informacoes *)p1;
- const struct informacoes *elem2 = (struct informacoes *)p2;
- if (elem1->codigo < elem2->codigo)
- return -1;
- else if (elem1->codigo > elem2->codigo)
- return 1;
- else
- return 0;
- }
- int main()
- {
- int codigo,instante,graulatitude,minutolatitude,segundolatitude,graulongitude,minutolongitude,segundolongitude;
- int count,par1,par2;
- while(scanf(" %d",&codigo)!=EOF) {
- if(codigo!=00000){
- scanf("%d %d %d\' %d\" %d %d\' %d\"",&instante,&graulatitude,&minutolatitude,&segundolatitude,&graulongitude,&minutolongitude,&segundolongitude);
- informacao[count].codigo=codigo;
- informacao[count].instante=instante;
- informacao[count].graulatitude=graulatitude;
- informacao[count].minutolatitude=minutolatitude;
- informacao[count].segundolatitude=segundolatitude;
- informacao[count].graulongitude=graulongitude;
- informacao[count].minutolongitude=minutolongitude;
- informacao[count].segundolongitude=segundolongitude;
- count++;
- }
- qsort(informacao,count,sizeof(informacao),compare);
- if(codigo==00000) {
- scanf("%d %d",&par1,&par2);
- int find1=PesquisaBinaria(par1,informacao,0,count);
- int find2=PesquisaBinaria(par2,informacao,0,count);
- if(find1==-1 && find2!=-1)
- printf("+ sem dados sobre o suspeito %d",par1);
- else if(find1!=-1 && find2==-1)
- printf("+ sem dados sobre o suspeito %d",par2);
- else if(find1==-1 && find2==-1) {
- if(informacao[find1].codigo==informacao[find2].codigo && informacao[find1].instante==informacao[find2].instante && informacao[find1].graulatitude == informacao[find2].graulatitude && informacao[find1].minutolatitude==informacao[find2].minutolatitude && informacao[find1].segundolatitude == informacao[find2].segundolatitude && informacao[find1].graulongitude==informacao[find2].graulongitude && informacao[find1].minutolongitude==informacao[find2].minutolongitude && informacao[find1].segundolatitude==informacao[find2].segundolatitude) {
- printf("+ %05d e %05d podem ter-se encontrado em:",par1,par2);
- }
- }
- else {
- break;
- }
- }
- printf("%d\n",informacao[1].instante);
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement