Submission #732421

#TimeUsernameProblemLanguageResultExecution timeMemory
732421Programmer123Swap Swap Sort (CCO21_day1problem1)C++17
0 / 25
5091 ms980 KiB
#include <bits/stdc++.h>

int main() {
    int N, K, Q;
    std::cin >> N >> K >> Q;
    int data[N];
    for (int i = 0; i < N; ++i) {
        std::cin >> data[i];
        data[i]--;
    }
    int nums[K];
    for (int i = 0; i < K; ++i) {
        nums[i] = i;
    }
    int pos[K];
    for (int i = 0; i < K; ++i) {
        pos[i] = i;
    }
    for (int _ = 0; _ < Q; ++_) {
        int index;
        std::cin >> index;
        std::swap(nums[index], nums[index - 1]);
        pos[nums[index]] = index;
        pos[nums[index - 1]] = index - 1;
#ifdef LOCAL
        for (int i = 0; i < K; ++i) {
            std::cout << nums[i] << " ";
        }
        std::cout << std::endl;
#endif
        int sort[N];
        for (int i = 0; i < N; ++i) {
            sort[i] = pos[data[i]];
        }
        int swaps = 0;
        while (true) {
            for (int i = 0; i < N - 1; ++i) {
                if (sort[i + 1] < sort[i]) {
                    goto unsorted;
                }
            }
            break;
        unsorted:
            for (int i = 0; i < N - 1; ++i) {
                if (sort[i + 1] < sort[i]) {
                    std::swap(sort[i + 1], sort[i]);
                    swaps++;
                }
            }
        }
        std::cout << swaps << std::endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...