Advertisement
FoxTuGa

Cromos Repetidos.c

Apr 20th, 2012
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct tagCromos {
  5.     int inf;
  6.     int sup;
  7. };
  8.  
  9. int compfunc(const void *i1, const void *i2);
  10.  
  11. int cromosf[2000000];
  12.  
  13. int main() {
  14.     struct tagCromos cromos[100000];
  15.     int i, idx, aux, idx2, idx3;
  16.  
  17.     i = idx = aux = 0;
  18.  
  19.     scanf("%d", &i);
  20.     aux = i;
  21.  
  22.     while( i > 0 ) {
  23.         scanf("%d %d", &cromos[idx].inf, &cromos[idx].sup);
  24.         idx++;
  25.         i--;
  26.     }
  27.  
  28.     qsort(cromos, aux, sizeof(struct tagCromos), compfunc);
  29.  
  30.     for(idx=0, idx2=0, idx3=0; idx2 < aux ; idx2++) {
  31.         if( idx2 != 0 ) {
  32.             if( cromos[idx2].inf > cromos[idx2-1].sup ) {
  33.                 idx += cromos[idx2].sup - cromos[idx2].inf;
  34.                 continue;
  35.             }
  36.             if( cromos[idx2].sup > cromos[idx2-1].sup ) {
  37.                 cromos[idx2].inf = cromos[idx2-1].sup;
  38.                 idx += cromos[idx2].sup - cromos[idx2].inf;
  39.             }
  40.         }
  41.         else {
  42.             idx += cromos[idx3].sup - cromos[idx3].inf;
  43.             idx++;
  44.         }
  45.     }
  46.  
  47.     printf("%d\n", idx);
  48.  
  49.     return 0;  
  50. }
  51.  
  52. int compfunc(const void *i1, const void *i2) {
  53.     struct tagCromos *a = (struct tagCromos *)i1;
  54.     struct tagCromos *b = (struct tagCromos *)i2;
  55.  
  56.     if( a->inf != b->sup )
  57.         return a->inf - b->inf;
  58.     else
  59.         return a->sup - b->sup;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement