QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#244315 | #7687. Randias Permutation Task | ucup-team2432# | WA | 0ms | 3840kb | C++20 | 1.8kb | 2023-11-08 23:08:06 | 2023-11-08 23:08:07 |
Judging History
answer
#include<bits/stdc++.h>
using LL = long long;
const LL inf = 1e9;
const LL P[2] = {1000000007,1000000009};
const LL K = 7653524;
std::array<LL,2> hash(const std::vector<LL> &vec) {
std::array<LL,2> res = {0,0},unit = {1,1};
int n = vec.size() - 1;
for (int i = n-1; i >= 0; --i) {
for (int j = 0; j < 2; ++j) {
res[j] = (res[j] + unit[j] * vec[i]) % P[j];
unit[j] = unit[j] * K % P[j];
}
}
return res;
}
void solve() {
std::mt19937 rnd(std::random_device{}());
int n,m;std::cin >> n >> m;
std::vector pmt(m,std::vector<LL>(n+1));
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
std::cin >> pmt[i][j];
}
}
std::shuffle(pmt.begin(),pmt.end(),rnd);
std::map<std::array<LL,2>,int> mp;
std::priority_queue<std::pair<int,std::vector<LL>>,std::vector<std::pair<int,std::vector<LL>>>,std::greater<>> q;
for (int i = 0; i < m; ++i) {
pmt[i][n] = i;
q.emplace(i+1,pmt[i]);
}
LL ans = 0;
while (!q.empty()) {
auto [point,vec] = q.top();q.pop();
auto hsh = hash(vec);
if (!mp.count(hsh)) {
mp[hsh] = vec.back();
ans ++;
} else {
if (mp[hsh]+10 < vec.back()) {
continue;
}
}
if (point == m) continue;
q.emplace(point+1,vec);
std::vector<int> now(n);
for (int i = 0; i < n; ++i) {
now[i] = vec[pmt[point][i] - 1];
}
now[n] = point;
q.emplace(point+1,vec);
}
std::cout << ans % P[0];
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
// clock_t st = clock();
// std::cout << std::fixed << std::setprecision(12);
// freopen("test.in", "r", stdin);
// freopen("test.out", "w", stdout);
int T = 1;
// std::cin >> T;
while (T --) {
solve();
}
// std::cout << (double)(clock()-st)/CLOCKS_PER_SEC;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3840kb
input:
5 4 1 2 3 4 5 5 1 3 4 2 3 4 1 5 2 5 2 4 1 3
output:
4
result:
wrong answer 1st numbers differ - expected: '8', found: '4'