Cod sursa(job #302136)

Utilizator luckBogdan Luca luck Data 8 aprilie 2009 17:54:18
Problema Litere Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    int n, i, j, k;
    long sw;
    char *s, t;
    FILE *f;
    f = fopen("litere.in", "r");
    fscanf(f, "%d\n", &n);
    s = (char*)malloc((n + 1) * sizeof(char));
    sw = 0;
    for(i = 0; i < n; i++) {
        fscanf(f, "%c", &s[i]);
        s[i + 1] = 0;
        j = i - 1;
        while(j >= 0 && s[j] > s[i]) {
            j--;
            sw++;
        }
        if(j < i - 1) {
            t = s[i];
            /*for(k = i - 1; k > j; k--)
                s[k + 1] = s[k];*/
            memmove(s + j + 2, s + j + 1, i - j);
            s[j + 1] = t;
        }
    }
    fclose(f);
    for(i = 0; i < n; i++)
        printf("%c", s[i]);
    printf("\n%ld\n", sw);
    f = fopen("litere.out", "w");
    fprintf(f, "%ld\n", sw);
    fclose(f);
    free(s);
    return 0;
}