QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#142850 | #5744. Palindromic Differences | ammardab3an# | WA | 10ms | 7488kb | C++17 | 1.7kb | 2023-08-20 00:41:29 | 2023-08-20 00:41:33 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
const ll MM = 1e9 + 9, N = 5e5 + 10;
using namespace std;
ll pow(ll a, ll b, ll m) {
ll res = 1;
while (b) {
if (b % 2) {
res = res * a % m;
}
a = a * a % m;
b /= 2;
}
return res;
}
ll inverse_mod(ll a, ll m) {
return pow(a, m - 2, m);
}
ll fact[N];
ll Com(ll n, ll r) {
return fact[n] * inverse_mod(fact[r] * fact[n - r] % MM, MM) % MM;
}
void factt() {
fact[0] = 1;
for (ll i = 1; i < N; i++) {
fact[i] = fact[i - 1] * i % MM;
}
}
int solve() {
int n; cin >> n;
vector<ll>v(n);
ll sum = 0;
map<ll, ll>mp;
for (auto& x : v) {
cin >> x;
sum += x;
mp[x]++;
}
if ((sum * 2) % (n))return cout << 0 << '\n', 0;
ll d = sum * 2 / n;
if (n % 2) {
if (d % 2)return cout << 0 << '\n', 0;
if (mp[d / 2] % 2 == 0)return cout << 0 << '\n', 0;
mp[d / 2]--;
if (!mp[d / 2])mp.erase(d / 2);
n--;
}
ll res = pow(2, n / 2, MM) * fact[n / 2] % MM;
vector<ll>vv;
n /= 2;
for (auto x : mp) {
if (x.first + x.first == d) {
if (x.second % 2)return cout << 0 << '\n', 0;
res *= inverse_mod(x.second / 2, MM);
res %= MM;
res *= inverse_mod(pow(2, x.second / 2, MM), MM);
res %= MM;
n -= x.second / 2;
continue;
}
if (mp[d - x.first] != x.second) {
return cout << 0 << '\n', 0;
}
vv.emplace_back(x.second);
mp.erase(d - x.first);
}
for (auto x : vv) {
res *= inverse_mod(fact[x], MM);
res %= MM;
}
cout << res << '\n';
return 0;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
factt();
int t = 1;
cin >> t;
while (t--) {
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 4ms
memory: 7400kb
input:
5 3 2 3 1 4 1 1 1 1 3 1 2 4 7 0 200 0 200 50 100 150 14 -1 0 1 2 3 4 5 6 7 8 9 10 11 12
output:
2 1 0 24 645120
result:
ok 5 number(s): "2 1 0 24 645120"
Test #2:
score: 0
Accepted
time: 4ms
memory: 7488kb
input:
100 3 96 145 47 5 26 50 50 26 38 4 -60 -72 -60 -72 5 19 70 -32 117 -79 4 -34 -85 -11 -62 4 187 26 -85 76 2 22 -150 5 33 127 -61 -88 154 3 208 85 -38 3 -71 3 77 4 -78 90 -78 90 4 45 -41 -77 81 2 -93 85 3 -269 -100 69 5 -35 -31 -31 -33 -35 3 -91 -3 -47 4 -80 -82 42 44 2 -217 17 2 -56 74 5 -71 146 141 ...
output:
2 4 4 8 8 8 2 8 2 2 4 8 2 2 4 2 8 2 2 8 2 8 2 8 8 2 2 2 2 2 2 2 2 2 2 4 2 8 2 2 8 2 8 2 4 8 8 4 8 2 2 2 4 8 4 8 2 2 8 2 2 2 2 4 8 8 8 2 8 2 8 2 4 8 2 8 2 4 2 2 2 2 8 8 8 2 8 8 8 2 2 8 2 4 8 8 2 2 2 2
result:
ok 100 numbers
Test #3:
score: 0
Accepted
time: 1ms
memory: 7480kb
input:
100 6 620 -1224 -1224 -577 620 -27 6 2368 2266 788 -950 -848 630 6 -742 373 -1293 373 -1293 -178 9 313 863 -874 602 -1135 602 -874 -136 -585 7 -639 -331 73 -639 477 785 785 6 56 2521 -432 1768 -697 2256 8 -821 61 -183 -237 -679 329 398 -78 6 -2045 -2047 -437 987 -623 985 8 340 -934 988 -354 -313 408...
output:
24 48 24 192 24 48 0 48 384 48 3840 48 24 24 48 384 1920 384 384 192 48 48 24 64 8 1920 1920 960 1920 96 24 0 24 192 160 24 192 960 192 96 3840 48 64 48 640 384 24 48 24 0 3840 0 384 0 24 3840 384 384 0 96 48 0 192 64 0 24 192 24 3840 64 0 192 24 192 64 192 1920 48 640 192 1920 64 1920 192 384 64 0 ...
result:
ok 100 numbers
Test #4:
score: 0
Accepted
time: 10ms
memory: 7412kb
input:
100 120 -114455311 -174718615 -37866982 -532413059 -97795839 -156986074 -433955847 -223791205 36013704 -128839659 -418460507 108469214 -141533155 -61323330 -374765855 -446611365 -363293792 -223791205 -360642838 130620126 -37866982 -174718615 -434523524 -374765855 -446611365 -199440556 141236146 3464...
output:
301557016 693667370 679308776 382295205 413760016 590145961 904245786 403834612 677442056 80470289 858160459 914072231 25248974 231559052 153817535 907768656 563481227 601280785 971106226 751059249 763721259 928947455 677434313 26701054 769219518 677880763 125068890 427310717 667323432 0 0 70980410 ...
result:
ok 100 numbers
Test #5:
score: -100
Wrong Answer
time: 1ms
memory: 7384kb
input:
100 349 4 -3 8 -5 6 3 3 12 10 -1 -2 0 0 -3 0 6 -1 3 6 9 12 10 3 3 11 6 -3 4 10 13 12 11 12 10 4 3 2 11 4 10 12 -2 -1 -2 4 -2 5 -4 6 10 3 -2 7 -2 13 5 3 12 5 4 5 9 -4 4 9 11 7 3 -3 12 -2 3 4 -1 9 9 6 9 5 3 3 10 7 4 1 1 -4 1 5 3 7 10 12 5 3 5 -5 12 11 1 3 4 4 -3 5 4 -3 -2 4 10 -1 9 4 10 4 -5 10 10 1 -...
output:
192076744 98789098 409673842 807605665 288 0 530220802 843037186 602693947 736635734 184618121 970024262 270547937 521728622 423465405 440706023 785808668 38075639 721310630 4480 881730861 602495808 710843352 962022720 756479337 0 61114616 531661986 0 5760 0 937709304 323080244 782972451 326301404 5...
result:
wrong answer 1st numbers differ - expected: '797334197', found: '192076744'