QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#654825#8058. Binary vs Ternaryzqx#WA 2ms3872kbC++231.9kb2024-10-18 22:25:412024-10-18 22:25:42

Judging History

你现在查看的是最新测评结果

  • [2024-10-18 22:25:42]
  • 评测
  • 测评结果:WA
  • 用时:2ms
  • 内存:3872kb
  • [2024-10-18 22:25:41]
  • 提交

answer

#include <bits/stdc++.h>

#define int long long 
#define pii pair < int , int >

using namespace std;

const int N = 64 + 10;

void Solve()
{
    vector < int > a, b;
    string s, t;
    int n, m;
    cin >> s >> t;
    vector < pii > ans;
    for (auto si : s)
        a.push_back(si - '0');
    for (auto ti : t)
        b.push_back(ti - '0');

    if ((int)a.size() == 1 && a != b)
    {
        cout << "-1\n";
        return ;
    }

    // 0 -> 1
    n = (int)a.size(), m = (int)b.size();
    for (int i = 0; i < n - 1; i++)
    {
        if (a[i] == 1 && a[i + 1] == 0)
        {
            ans.push_back({i, i + 1});
            a[i + 1] = 1;
        }
    }

    //1->0
    n = (int)a.size();
    for (int i = n - 1; i >= 1; i--)
    {
        if (a[i] == 1 && a[i - 1] == 1)
        {
            ans.push_back({i - 1, i});
            a[i] = 0;
            a.push_back(0);
        }
    }

    //n -> m
    n = (int)a.size(), m = (int)b.size();
    while (n > m)
    {
        ans.push_back({n - 2, n - 1});
        n--;
        a.pop_back();
    }

    while (n < m)
    {
        ans.push_back({0, 1});
        ans.push_back({0, 1});
        a.push_back(0);
        n++;
    }

    //0 -> 1
    n = (int)a.size();
    for (int i = 0; i < n - 1; i++)
    {
        ans.push_back({i, i + 1});
        a[i + 1] = 1;
    }

    // 1->0
    n = (int)a.size();
    for (int i = 0; i < n; i++)
    {
        if (b[i] == 0)
        {
            ans.push_back({i - 1, i});
            ans.push_back({i, i + 1});
            a[i] = 0;
        }
    }

    assert(ans.size() <= 512);
    
    cout << ans.size() << "\n";
    for (auto [l, r] : ans)
        cout << l + 1 << " " << r + 1 << "\n";
    return ;

}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int T = 1;
    cin >> T;

    while (T--)
    {
        Solve();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3536kb

input:

3
1
111
110110
1101010
1111
111111

output:

-1
23
2 3
5 6
5 6
4 5
3 4
2 3
1 2
10 11
9 10
8 9
7 8
1 2
2 3
3 4
4 5
5 6
6 7
2 3
3 4
4 5
5 6
6 7
7 8
9
3 4
2 3
1 2
6 7
1 2
2 3
3 4
4 5
5 6

result:

ok Haitang Suki (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 2ms
memory: 3872kb

input:

1000
11100
111
1
11110
10001
10
1011
1111
10
1110
1100
11
11010
11
110
11
1
10001
10110
10
10
11111
10000
1001
10
1
11
10111
11
10
1
100
11
10100
1
10
101
11
1100
110
11
1110
1
1001
1
11111
10
10010
10
11001
110
1010
10011
1110
10100
1001
1001
101
100
1
1001
11
101
11
101
1001
1
1
1011
1
10
10
1011
...

output:

14
3 4
4 5
4 5
3 4
2 3
1 2
8 9
7 8
6 7
5 6
4 5
3 4
1 2
2 3
-1
17
1 2
2 3
3 4
4 5
3 4
2 3
1 2
8 9
7 8
6 7
5 6
4 5
3 4
2 3
1 2
1 2
2 3
10
1 2
3 4
2 3
1 2
6 7
5 6
4 5
1 2
2 3
3 4
9
1 2
1 2
1 2
1 2
1 2
2 3
3 4
3 4
4 5
11
2 3
3 4
3 4
2 3
1 2
6 7
5 6
4 5
3 4
2 3
1 2
14
2 3
4 5
4 5
3 4
2 3
1 2
8 9
7 8
6 7
...

result:

wrong answer (l,r) is invalid (test case 12)