QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#234143 | #1965. Trio | BUET_Twilight# | WA | 1ms | 3972kb | C++23 | 2.7kb | 2023-11-01 14:29:05 | 2023-11-01 14:29:05 |
Judging History
answer
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/detail/standard_policies.hpp>
using namespace __gnu_pbds;
using namespace std;
#define getbit(n, i) (((n) & (1LL << (i))) != 0)
#define setbit0(n, i) ((n) & (~(1LL << (i))))
#define setbit1(n, i) ((n) | (1LL << (i)))
#define togglebit(n, i) ((n) ^ (1LL << (i)))
#define lastone(n) ((n) & (-(n)))
char gap = 32;
#define int long long
#define ll long long
#define lll __int128_t
#define pb push_back
typedef tree<
int,
null_type,
less<int>,
rb_tree_tag,
tree_order_statistics_node_update>
ordered_set;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ll hashPrime = 1610612741;
const int M = 10;
vector<vector<bitset<M>>> calc(vector<int> arr) {
bitset<M> fre[2][10];
for(int i = 0; i < arr.size(); i++) {
fre[0][arr[i] % 10][i] = 1;
fre[1][arr[i] / 10][i] = 1;
}
vector<vector<bitset<M>>> res(100, vector<bitset<M>>(100, 0));
for(int i = 11; i <= 99; i++) {
if(i % 10 == 0) continue;
for(int j = 11; j <= 99; j++) {
if(j % 10 == 0) continue;
int a = i / 10, b = i % 10;
int e = j / 10, f = j % 10;
if(a == e) {
res[i][j] |= (fre[1][a]);
}
else {
for(int k = 1; k <= 9; k++) {
if(k == a or k == e) continue;
res[i][j] |= (fre[1][k]);
}
}
if(b == f) {
res[i][j] &= (fre[0][b]);
}
else {
bitset<M> tmp = 0;
for(int k = 1; k <= 9; k++) {
if(k == b or k == f) continue;
tmp |= (fre[0][k]);
}
res[i][j] &= tmp;
}
}
}
return res;
}
void solve() {
int n; cin >> n;
vector<int> a(n);
vector<int> fp, sp;
for(int i = 0; i < n; i++) {
cin >> a[i];
fp.push_back(a[i] / 100);
sp.push_back(a[i] % 100);
}
auto fcalc = calc(fp);
auto scalc = calc(sp);
bitset<M> x;
int ans = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(i == j) continue;
x = (fcalc[fp[i]][fp[j]] & scalc[sp[i]][sp[j]]);
//cout << x.to_string() << "\n";
x[i] = 0;
x[j] = 0;
ans += x.count();
}
}
//cout << ans << "\n";
cout << ans / 6 << "\n";
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3760kb
input:
4 1234 2345 3456 4567
output:
4
result:
ok single line: '4'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3972kb
input:
9 1299 2399 3499 4599 5699 6799 7899 8999 9199
output:
84
result:
ok single line: '84'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3912kb
input:
9 1239 2349 3459 4569 5679 6789 7899 8919 9129
output:
84
result:
ok single line: '84'
Test #4:
score: 0
Accepted
time: 1ms
memory: 3696kb
input:
9 1999 2999 3999 4999 5999 6999 7999 8999 9999
output:
84
result:
ok single line: '84'
Test #5:
score: 0
Accepted
time: 1ms
memory: 3916kb
input:
9 1234 2345 3456 4567 5678 6789 7891 8912 9123
output:
84
result:
ok single line: '84'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3908kb
input:
18 1211 2311 3411 4511 5611 6711 7811 8911 9111 1222 2322 3422 4522 5622 6722 7822 8922 9122
output:
168
result:
ok single line: '168'
Test #7:
score: 0
Accepted
time: 1ms
memory: 3780kb
input:
17 1211 2311 3411 4511 5611 6711 7811 8911 9111 1231 2341 3451 4561 5671 6781 7891 9121
output:
336
result:
ok single line: '336'
Test #8:
score: -100
Wrong Answer
time: 0ms
memory: 3784kb
input:
81 1211 2311 3411 4511 5611 6711 7811 8911 9111 1222 2322 3422 4522 5622 6722 7822 8922 9122 1233 2333 3433 4533 5633 6733 7833 8933 9133 1244 2344 3444 4544 5644 6744 7844 8944 9144 1255 2355 3455 4555 5655 6755 7855 8955 9155 1266 2366 3466 4566 5666 6766 7866 8966 9166 1277 2377 3477 4577 5677 67...
output:
39405
result:
wrong answer 1st lines differ - expected: '43848', found: '39405'