Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define N 10005
- int apartament_number[N];
- char *money[N];
- int apartaments = 0;
- int compare_apartaments(const void *p1, const void *p2) {
- int ind1 = *((int *)p1);
- int ind2 = *((int *)p2);
- if (ind1 == ind2) return 0;
- char *a1 = money[ind1];
- char *a2 = money[ind2];
- if (a1[0] != a2[0]) return (int)a1[0] - (int)a2[0];
- int size1 = strlen(a1);
- int size2 = strlen(a2);
- int i1 = 1;
- int i2 = 1;
- while (i1 < size1 && a1[i1] == '0') i1++;
- while (i2 < size2 && a2[i2] == '0') i2++;
- if (size1 - i1 != size2 - i2) return (size2 - i2) - (size1 - i1);
- while (i1 < size1 && i2 < size2 && a1[i1] == a2[i2]) {
- i1++;
- i2++;
- }
- if (i1 == size1) return 0;
- return (int)a2[i2] - (int)a1[i1];
- }
- int main() {
- int n = 0;
- int status = scanf(" %d ", &n);
- while (status != -1) {
- scanf(" %m[A-Z0-9] ", &money[n]);
- apartament_number[apartaments] = n;
- apartaments++;
- status = scanf(" %d ", &n);
- }
- qsort(apartament_number, apartaments, sizeof(int), compare_apartaments);
- for (int i = 0; i < apartaments; ++i) {
- printf("%d ", apartament_number[i]);
- free(money[apartament_number[i]]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement