Advertisement
Guest User

Untitled

a guest
Mar 2nd, 2015
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <string.h>
  5. struct Date {
  6.     int Day, Month, Year;
  7. };
  8.  
  9. int Key(struct Date *date,int id)
  10. {
  11.   int i;
  12.  if(id==1)
  13.    return date->Day-1;
  14.  if (id==2)
  15.    return date->Month-1;
  16.  else
  17.    return (date->Year)-1970;
  18. }
  19. void SortRaspr (struct Date *Mas,int nel,int (*Key)(struct Date *date,int id))
  20. {  
  21.   int i=0,j,k,d=4,g,sch;
  22.   int razm;
  23.   struct Date newm[nel];
  24.    
  25.   for (g=1;g<d;g++){
  26.       sch=g;
  27.      // printf("%d\n",sch);
  28.       if (sch==1) razm=31;
  29.       else
  30.         if (sch==2) razm=12;
  31.         else razm=62;
  32.       int count[razm];
  33.       for (i=0;i<razm;i++)
  34.         count[i]=0;
  35.       j=nel-1;
  36.       while (j>=0){
  37.           if (sch==1) k=Key(&Mas[j],sch);
  38.           else
  39.               if (sch==2) k=Key(&Mas[j],sch);
  40.               else k=Key(&Mas[j],sch);
  41.      
  42.         count[k]++;
  43.         j--;
  44.    }  
  45.    //printf("r\n");
  46.     //for (i=0;i<razm;i++)
  47.     //printf("%d",count[i]);
  48.    i=1;
  49.    while(i<razm){
  50.         count[i]=count[i]+count[i-1];
  51.         i++;
  52.    }
  53.    
  54.    j=0;
  55.    while (j<nel){
  56.      //
  57.    if (sch==1)
  58.         k=Key(&Mas[j],sch);
  59.    else
  60.    if (sch==2)
  61.         k=Key(&Mas[j],sch);
  62.    else k=Key(&Mas[j],sch);
  63.      //
  64.    
  65.    i=count[k]-1;
  66.    count[k]=i;
  67.    newm[i]=Mas[j];
  68.    j++;
  69.    }
  70.     }
  71.  // for(i=0;i<nel;i++)
  72.  // printf("%d %d %d\n", newm[i].Year, newm[i].Month, newm[i].Day);
  73.  
  74.     for (i=nel-1;i>=0;i--)
  75.     Mas[i]=newm[i];
  76. }
  77. int main()
  78. {  
  79.   int N,i,nach;
  80.   scanf("%d",&N);
  81.   struct Date MasDat[N];
  82.  
  83.   for(i=0;i<N;i++)
  84.   scanf("%d%d%d", &MasDat[i].Year, &MasDat[i].Month, &MasDat[i].Day);
  85.  
  86.  
  87.    SortRaspr(MasDat,N,Key);
  88.  
  89.    
  90.  
  91.   for(i=0;i<N;i++)
  92.   printf("%d %d %d\n", MasDat[i].Year, MasDat[i].Month, MasDat[i].Day);
  93.  
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement