QOJ AC 你谷 RE 是什么情况
查看原帖
QOJ AC 你谷 RE 是什么情况
365751
Mr_罗楼主2024/12/25 12:14

@cff_0102 实在无法发现问题了……能不能发一下 SPJ 的实现方式啊(

报错信息:

Runtime Error.wrong answer 1-st run, subtest 1. The output number is not in the specified range (test case 1)

Program exited with code 3.

代码:

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

#define vi vector<int>
#define eb emplace_back
#define rep(i, l, r) for (int i(l), i##End(r); i <= i##End; i = -~i)

#define N 300005

int n, m;
int a[N], b[N];
map<int, int> mp;

vi Encode(int n, int m, vi T){
	// 加密过程
    mp.clear();
    assert(m == (int)T.size());
    rep(i, 1, m) a[i] = T[i - 1];
    sort(a + 1, a + m + 1);
    rep(i, 1, m) mp[a[i]] = 1;
    int t = 0;
    rep(i, 1, m) {
        t++;
        int j = a[i] % n + 1;
        mp[a[i]] = 2;
        while (mp[j] != 1 && t) {
            if (!mp[j]) mp[j] = 3, t--;
            j = j % n + 1;
        }
    }
    int k = 0;
    for (auto [x, y] : mp) if (y == 3) b[++k] = x;
    sort(b + 1, b + k + 1);
    vi R;
    rep(i, 1, k) R.eb(b[i]);
	return R;
}

vi Decode(int n, int m, vi R){
	// 解密过程
    mp.clear();
    assert(m == (int)R.size());
    rep(i, 1, m) a[i] = R[i - 1];
    rep(i, 1, m) a[i] = n - a[i] + 1;
    sort(a + 1, a + m + 1);
    rep(i, 1, m) mp[a[i]] = 1;
    int t = 0;
    rep(i, 1, m) {
        t++;
        int j = a[i] % n + 1;
        mp[a[i]] = 2;
        while (mp[j] != 1 && t) {
            if (!mp[j]) mp[j] = 3, t--;
            j = j % n + 1;
        }
    }
    int k = 0;
    for (auto [x, y] : mp) if (y == 3) b[++k] = n - x + 1;
    sort(b + 1, b + k + 1);
    vi T;
    rep(i, 1, k) T.eb(b[i]);
	return T;
}
2024/12/25 12:14
加载中...