QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#853451 | #9731. Fuzzy Ranking | awoo~ (Mikhail Piklyaev)# | WA | 10ms | 3504kb | C++17 | 1.7kb | 2025-01-11 17:03:05 | 2025-01-11 17:03:16 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define forn(i, n) for(int i = 0; i < int(n); i++)
#define fore(i, l, r) for(int i = int(l); i < int(r); i++)
#define sz(a) int((a).size())
typedef long long li;
int n, k, m;
vector<vector<int>> a;
bool read() {
if (!(cin >> n >> k >> m))
return false;
a.resize(k);
forn(i, k){
a[i].resize(n);
forn(j, n){
cin >> a[i][j];
--a[i][j];
}
}
return true;
}
mt19937_64 rnd64(42);
typedef unsigned long long uli;
void solve() {
vector<uli> val(n);
forn(i, n) val[i] = rnd64();
vector<pair<int, int>> seg;
vector<uli> cur(k);
int l = 0;
forn(r, n){
forn(i, k) cur[i] ^= val[a[i][r]];
if (count(cur.begin(), cur.end(), cur[0]) == k){
seg.push_back({l, r});
cur.assign(k, 0);
l = r + 1;
}
}
vector<int> pr(n + 1);
vector<int> nxt(n + 1, -1), prv(n, -1);
for (auto [l, r] : seg){
pr[l + 1] += (r - l) * li(r - l + 1) / 2;
nxt[l] = l;
prv[r] = r;
}
nxt[n] = n;
fore(i, 1, n) if (prv[i] == -1) prv[i] = prv[i - 1];
for (int i = n - 1; i >= 0; --i) if (nxt[i] == -1) nxt[i] = nxt[i + 1];
forn(i, n) pr[i + 1] += pr[i];
li v = 0;
forn(i, m){
int id, l, r;
cin >> id >> l >> r;
id = (id + v) % k + 1;
l = (l + v) % n;
r = (r + v) % n;
li nv = pr[r + 1] - pr[l];
nv += (nxt[l] - l) * li(nxt[l] - l - 1) / 2;
if (r != prv[r]){
nv -= ((nxt[r + 1] - 1) - (prv[r] + 1)) * li((nxt[r + 1] - 1) - (prv[r] + 1) + 1) / 2;
nv += (r - prv[r]) * li(r - prv[r] - 1) / 2;
}
cout << nv << '\n';
v = nv;
}
}
int main() {
#ifdef _DEBUG
freopen("input.txt", "r", stdin);
#endif
ios_base::sync_with_stdio(0);
cin.tie(0);
int t = 1;
cin >> t;
forn(i, t) {
read();
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3500kb
input:
2 5 2 2 1 2 3 4 5 5 4 3 2 1 1 0 2 1 2 1 5 3 3 1 2 3 4 5 1 3 2 4 5 1 2 3 5 4 0 0 2 0 2 3 1 0 3
output:
3 10 1 1 2
result:
ok 5 lines
Test #2:
score: -100
Wrong Answer
time: 10ms
memory: 3504kb
input:
2000 10 10 10 4 5 3 6 8 9 2 1 7 10 4 5 6 3 8 9 1 2 10 7 5 4 3 6 8 9 1 2 7 10 4 5 6 3 8 9 1 2 7 10 4 5 3 6 8 9 2 1 10 7 4 5 6 3 8 9 1 2 10 7 5 4 6 3 8 9 1 2 7 10 5 4 6 3 8 9 1 2 10 7 4 5 6 3 8 9 2 1 7 10 5 4 3 6 8 9 2 1 10 7 3 1 6 5 7 8 0 2 3 7 9 9 2 1 9 6 1 6 7 2 3 0 0 4 1 8 1 1 8 7 10 10 10 9 10 5 ...
output:
1 1 0 0 3 2 0 2 2 4 1 0 1 1 1 1 2 4 4 3 -14 61 -32 87448 0 6 -41 1326 1 -39 0 3 10 6 16 5 9 0 3 1 1 6 3 3 0 4 5 3 4 1 1 3 2 4 -1 2 -2 0 -3 -1 0 0 1 1 2 0 0 1 2 1 1 0 -1 0 0 -3 0 4 4 1 3 6 16 16 0 11 16 1 4 15 1 4 2 0 0 2 0 1 2 4 0 0 0 0 0 0 0 0 0 0 1 0 0 6 3 0 3 4 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 1 3 1...
result:
wrong answer 21st lines differ - expected: '1', found: '-14'