Submission #2235187


Source Code Expand

#include <stdio.h>
#include <string.h>

void swap(char *a, char *b)
{
    char t = *a;
    *a = *b;
    *b = t;
}

void minsort(char *str, int len)
{
    for (int i = 0; i < len; ++i) {
        for (int k = i+1; k < len; ++k) {
            if (str[i] > str[k]) {
                swap(&str[i], &str[k]);
            }
        }
    }
}

int diff(char *org, char *str, int len)
{
    int count = 0;
    for (int i = 0; i < len; ++i) {
        if (org[i] != str[i]) {
            count++;
        }
    }
    return count;
}

void makemin(int index, int len, char *org, char *minstr, char *tmp)
{
    int i, j;
    for (i = 0; i < len; ++i) {
        tmp[i] = '-';
    }
    tmp[len] = '\0';

    for (i = 0; i <= index; ++i) {
        tmp[i] = minstr[i];
    }

    char remain[124] = "";
    for (i = index+1; i < len; ++i) {
        int hit = 0;
        for (j = index+1; j < len; ++j) {
            if (minstr[i] == org[j] && tmp[j] != minstr[i]) {
                tmp[j] = minstr[i];
                hit = 1;
                break;
            }
        }
        if (! hit) {
            sprintf(remain, "%s%c", remain, minstr[i]);
        }
    }

    // remain を最小ソート
    minsort(remain, strlen(remain));

    for (i = 0; i < len; ++i) {
        for (j = index+1; j < len; ++j) {
            if (tmp[j] == '-') {
                tmp[j] = remain[i];
                break;
            }
        }
    }
}

int main(int argc, char **argv)
{
    int n, k;
    char s[124];
    scanf("%d %d %s", &n, &k, s);

    // 辞書式最小を作成
    char minstr[124];
    strcpy(minstr, s);
    minsort(minstr, n);

    char result[124];
    strcpy(result, s);

    char tmp[124];
    for (int index = 0; index < n; ++index) {
        // 辞書式最小文字列の作成
        makemin(index, n, s, minstr, tmp);
        // 差異の測定
        if (diff(s, tmp, n) > k) {
            break;
        } else {
            strcpy(result, tmp);
        }
    }
    printf("%s\n", result);
}

Submission Info

Submission Time
Task C - 辞書式順序ふたたび
User kusocodesensei
Language C (GCC 5.4.1)
Score 0
Code Size 2097 Byte
Status WA
Exec Time 1 ms
Memory 128 KB

Compile Error

./Main.c: In function ‘main’:
./Main.c:77:5: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d %d %s", &n, &k, s);
     ^

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 47
WA × 11
Set Name Test Cases
All hand_1_0.txt, hand_1_1.txt, hand_1_2.txt, hand_1_3.txt, hand_1_4.txt, hand_1_5.txt, hand_1_6.txt, hand_1_7.txt, hand_1_8.txt, hand_2_0.txt, hand_2_1.txt, hand_2_10.txt, hand_2_2.txt, hand_2_3.txt, hand_2_4.txt, hand_2_5.txt, hand_2_6.txt, hand_2_7.txt, hand_2_8.txt, hand_2_9.txt, hand_3_2.txt, hand_3_3.txt, hand_3_4.txt, hand_3_5.txt, hand_3_6.txt, hand_4_2.txt, hand_4_3.txt, hand_4_4.txt, hand_4_5.txt, hand_4_6.txt, random_1.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_2.txt, random_3.txt, random_4.txt, random_5.txt, random_6.txt, random_7.txt, random_8.txt, random_9.txt, sample_1.txt, sample_2.txt, sample_3.txt, sample_4.txt, small_1.txt, small_2.txt, small_3.txt, small_4.txt, small_5.txt, small_6.txt, small_7.txt, small_8.txt, small_9.txt
Case Name Status Exec Time Memory
hand_1_0.txt AC 0 ms 128 KB
hand_1_1.txt AC 1 ms 128 KB
hand_1_2.txt AC 1 ms 128 KB
hand_1_3.txt AC 1 ms 128 KB
hand_1_4.txt AC 1 ms 128 KB
hand_1_5.txt AC 1 ms 128 KB
hand_1_6.txt AC 1 ms 128 KB
hand_1_7.txt AC 1 ms 128 KB
hand_1_8.txt AC 1 ms 128 KB
hand_2_0.txt AC 0 ms 128 KB
hand_2_1.txt AC 1 ms 128 KB
hand_2_10.txt AC 1 ms 128 KB
hand_2_2.txt AC 1 ms 128 KB
hand_2_3.txt AC 1 ms 128 KB
hand_2_4.txt AC 1 ms 128 KB
hand_2_5.txt AC 1 ms 128 KB
hand_2_6.txt AC 1 ms 128 KB
hand_2_7.txt AC 1 ms 128 KB
hand_2_8.txt AC 1 ms 128 KB
hand_2_9.txt AC 1 ms 128 KB
hand_3_2.txt AC 1 ms 128 KB
hand_3_3.txt WA 1 ms 128 KB
hand_3_4.txt AC 1 ms 128 KB
hand_3_5.txt WA 1 ms 128 KB
hand_3_6.txt AC 1 ms 128 KB
hand_4_2.txt AC 1 ms 128 KB
hand_4_3.txt WA 1 ms 128 KB
hand_4_4.txt AC 1 ms 128 KB
hand_4_5.txt WA 1 ms 128 KB
hand_4_6.txt AC 1 ms 128 KB
random_1.txt WA 1 ms 128 KB
random_10.txt AC 1 ms 128 KB
random_11.txt WA 1 ms 128 KB
random_12.txt WA 1 ms 128 KB
random_13.txt WA 1 ms 128 KB
random_14.txt AC 1 ms 128 KB
random_15.txt AC 1 ms 128 KB
random_2.txt AC 1 ms 128 KB
random_3.txt AC 1 ms 128 KB
random_4.txt WA 1 ms 128 KB
random_5.txt AC 1 ms 128 KB
random_6.txt WA 1 ms 128 KB
random_7.txt AC 1 ms 128 KB
random_8.txt AC 1 ms 128 KB
random_9.txt WA 1 ms 128 KB
sample_1.txt AC 0 ms 128 KB
sample_2.txt AC 1 ms 128 KB
sample_3.txt AC 1 ms 128 KB
sample_4.txt AC 1 ms 128 KB
small_1.txt AC 1 ms 128 KB
small_2.txt AC 1 ms 128 KB
small_3.txt AC 0 ms 128 KB
small_4.txt AC 1 ms 128 KB
small_5.txt AC 1 ms 128 KB
small_6.txt AC 1 ms 128 KB
small_7.txt AC 1 ms 128 KB
small_8.txt AC 1 ms 128 KB
small_9.txt AC 0 ms 128 KB