Advertisement
wojiaocbj

W

Jun 11th, 2022
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <math.h>
  5. #include <string.h>
  6. typedef struct _data{
  7.     double value;char original[40];int order,input;
  8. }data;
  9. data arr[1919810] = {0};
  10. int compareval(const void *p1,const void *p2){
  11.     data *a = (data *)p1,*b = (data *)p2;
  12.     if(a->value > b->value)return 1;
  13.     else if(a->value < b->value)return -1;
  14.     else return 0;
  15. }
  16. int compareorder(const void *p1,const void *p2){
  17.     data *a = (data *)p1,*b = (data *)p2;
  18.     if(a->input > b->input)return 1;
  19.     else if(a->input < b->input)return -1;
  20.     else return 0;
  21. }
  22. int main(){
  23.     int n = 0,i;
  24.     while(~scanf("%s",&arr[n].original)){
  25.         arr[n].value = atof(arr[n].original);
  26.         arr[n].input = n;
  27.         n++;
  28.     }
  29.     printf("%d\n",n);
  30.     qsort(arr,n,sizeof(data),compareval);
  31.     int cur = 0;arr[0].order = 1;
  32.     for(i = 1;i < n;i++){
  33.         if(arr[i].value > arr[i - 1].value){
  34.             cur = i;
  35.         }
  36.         arr[i].order = cur + 1;
  37.     }
  38.     qsort(arr,n,sizeof(data),compareorder);
  39.     for(i = 0;i < n;i++){
  40.         printf("%d: %s\n",arr[i].order,arr[i].original);
  41.     }
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement