QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#573002 | #9310. Permutation Counting 4 | mojo__hugo | WA | 205ms | 3884kb | C++20 | 2.2kb | 2024-09-18 17:02:39 | 2024-09-18 17:02:40 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
using lll = __int128;
using ld = long double;
const int N = 1e6 + 5, M = 1e9 + 7;
template<typename T>
struct Fen{
int n;
vector<T>a;
Fen(int n_ = 0) {
init(n_);
}
void init(int n_) {
n = n_;
a.assign(n + 1, T{});
}
void add(int x, const T& v) {
for (int i = x;i <= n;i += i & -i) {
a[i] += v;
}
}
T qry(int x) {
T ans{};
for (int i = x;i > 0;i -= i & -i) {
ans += a[i];
}
return ans;
}
T qry(int l, int r) {
return qry(r) - qry(l - 1);
}
int kth(const T& k) {
int x = 0;
T cur{};
for (int i = 1 << __lg(n);i > 0;i /= 2) {
if (x + i <= n && cur + a[i + x] < k) {
x += i;
cur += a[x];
}
}
return x + 1;
}
};
using ull = unsigned long long;
int res;
int a[10], n, L[10], R[10];
void dfs(int i) {
if (i == n + 1) {
for (int j = 1;j <= n;j++) {
if (a[j] > R[j] || a[j] < L[j])return;
}
res++;
return;
}
for (int j = 1;j <= n;j++) {
if (!a[j]) {
a[j] = i;
dfs(i + 1);
a[j] = 0;
}
}
}
void solve() {
cin >> n;
if (n <= 6) {
for (int i = 1;i <= n;i++) {
cin >> L[i] >> R[i];
}
res = 0;
dfs(1);
cout << res % 2 << endl;
return;
}
set<pair<int, int>>st;
Fen<ull>t(n + 1);
bool ok = 1;
ull s = 0, p = 1;
for (int i = 1;i <= n;i++) {
int l, r;
cin >> l >> r;
if (st.count({ l,r }))ok = 0;
st.insert({ l,r });
p *= 13;
t.add(l, p);
t.add(r + 1, -p);
}
set<ull>stt;
for (int i = 1;i <= n;i++) {
s += t.qry(i);
if (stt.count(s))ok = 0;
stt.insert(s);
}
cout << !ok << endl;
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0);
int t = 1;
// cout << fixed << setprecision(10);
cin >> t;
while (t--)solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3612kb
input:
4 5 1 2 1 5 1 2 1 2 2 2 5 1 1 2 4 2 3 5 5 3 4 5 3 5 1 2 3 4 3 5 3 3 5 1 5 1 4 4 5 5 5 1 2
output:
0 1 0 0
result:
ok 4 tokens
Test #2:
score: -100
Wrong Answer
time: 205ms
memory: 3884kb
input:
66725 14 7 7 4 6 7 8 8 13 2 13 6 13 6 10 14 14 1 10 9 11 7 9 3 8 4 12 5 12 12 2 6 3 6 7 11 2 5 1 1 6 12 8 12 2 3 7 9 7 8 1 10 1 4 10 4 8 4 4 6 10 9 10 2 3 2 7 1 3 3 4 2 2 3 10 20 3 12 10 14 19 20 19 20 1 9 7 9 13 16 17 17 16 18 2 11 5 19 6 17 11 17 3 6 3 11 7 20 8 17 3 18 10 15 9 20 16 5 10 2 10 2 1...
output:
0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 ...
result:
wrong answer 1st words differ - expected: '1', found: '0'