Submission #2840390


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

const int N = 100010;

int n;
int A[N], B[N], cnt = 0;
map<int, vector<int>> pos;

void maintain(int x)
{
    if (!pos.count(x)) return;
    while (!pos[x].empty()) {
        int p = pos[x].back();
        if (A[p] == B[p])
            pos[x].pop_back();
        else
            break;
    }
    if (pos[x].empty())
        pos.erase(x);
}

void doswap(int i)
{
    ++cnt;
    swap(A[i], A[n]);
    maintain(A[i]);
    maintain(A[n]);
}

int main()
{
    printf("-1\n");
    return 0;

    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%d", &A[i]);
        A[n] ^= A[i];
    }
    for (int i = 0; i < n; ++i) {
        scanf("%d", &B[i]);
        B[n] ^= B[i];
        pos[B[i]].push_back(i);
    }

    int iter = 1e6;
    while (!pos.empty()) {
        if (--iter == 0) {
            cnt = -1;
            break;
        }
        maintain(A[n]);
        /*for (int i = 0; i <= n; ++i)
            printf("%d ", A[i]);
        printf("\n");
        for (auto v : pos) {
            printf("pos of %d:", v.first);
            for (auto x : v.second)
                printf(" %d", x);
            printf("\n");
        }*/
        if (pos.count(A[n])) {
            doswap(pos[A[n]].back());
        } else {
            int x = pos.begin()->first;
            maintain(x);
            if (pos.count(x))
                doswap(pos[x].back());
        }
    }
    printf("%d\n", cnt);

    return 0;
}

Submission Info

Submission Time
Task A - Shrinking
User aquablitz11
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1545 Byte
Status WA
Exec Time 1 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:37:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
                    ^
./Main.cpp:39:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &A[i]);
                           ^
./Main.cpp:43:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &B[i]);
                           ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 300
Status
WA × 4
WA × 14
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt
Case Name Status Exec Time Memory
0_00.txt WA 1 ms 256 KB
0_01.txt WA 1 ms 256 KB
0_02.txt WA 1 ms 256 KB
0_03.txt WA 1 ms 256 KB
1_00.txt WA 1 ms 256 KB
1_01.txt WA 1 ms 256 KB
1_02.txt WA 1 ms 256 KB
1_03.txt WA 1 ms 256 KB
1_04.txt WA 1 ms 256 KB
1_05.txt WA 1 ms 256 KB
1_06.txt WA 1 ms 256 KB
1_07.txt WA 1 ms 256 KB
1_08.txt WA 1 ms 256 KB
1_09.txt WA 1 ms 256 KB