Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <math.h>
- #include <string.h>
- typedef struct _data{
- double value;char original[40];int order,input;
- }data;
- data arr[1919810] = {0};
- int compareval(const void *p1,const void *p2){
- data *a = (data *)p1,*b = (data *)p2;
- if(a->value > b->value)return 1;
- else if(a->value < b->value)return -1;
- else return 0;
- }
- int compareorder(const void *p1,const void *p2){
- data *a = (data *)p1,*b = (data *)p2;
- if(a->input > b->input)return 1;
- else if(a->input < b->input)return -1;
- else return 0;
- }
- int main(){
- int n = 0,i;
- while(~scanf("%s",&arr[n].original)){
- arr[n].value = atof(arr[n].original);
- arr[n].input = n;
- n++;
- }
- printf("%d\n",n);
- qsort(arr,n,sizeof(data),compareval);
- int cur = 0;arr[0].order = 1;
- for(i = 1;i < n;i++){
- if(arr[i].value > arr[i - 1].value){
- cur = i;
- }
- arr[i].order = cur + 1;
- }
- qsort(arr,n,sizeof(data),compareorder);
- for(i = 0;i < n;i++){
- printf("%d: %s\n",arr[i].order,arr[i].original);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement