QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#553478 | #7565. Harumachi Kaze | ucup-team1231 | AC ✓ | 1854ms | 42624kb | C++14 | 3.4kb | 2024-09-08 14:00:02 | 2024-09-08 14:00:03 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
const int SZ = 1 << 17;
const ULL BAD = 234794728027282004ULL;
ULL addq(ULL u, ULL v) {
if(u == BAD || v == BAD) return BAD;
if(u == 0 || v == 0) return u + v;
printf("A %llu %llu\n", u, v); fflush(stdout);
ULL ret;
scanf("%llu", &ret);
return ret;
}
ULL minq(ULL u, ULL v) {
if(u == BAD || v == BAD) return u ^ v ^ BAD;
if(u == 0 || v == 0) return 0;
printf("C %llu %llu\n", u, v); fflush(stdout);
ULL ret;
scanf("%llu", &ret);
return ret;
}
int SA[8], SB[8];
struct segt {
ULL sum[SZ * 2 + 5];
void init(ULL arr[]) {
for(int i = 0; i < SZ; i++)
sum[i | SZ] = arr[i];
for(int i = SZ - 1; i >= 1; i--)
sum[i] = addq(sum[i << 1], sum[i << 1 | 1]);
}
void upd(int p, ULL x) {
sum[p |= SZ] = x;
for(p >>= 1; p >= 1; p >>= 1)
sum[p] = addq(sum[p << 1], sum[p << 1 | 1]);
}
}A[8], B[8];
int n, q, l;
ULL query(int ap, int bp) {
int v = 1;
ULL sl = 0, sr = 0;
while(v < SZ) {
ULL nl = addq(sl, A[ap].sum[v << 1]),
nr = addq(sr, B[bp].sum[v << 1 | 1]);
if(minq(nl, nr) == nl) {
sl = nl; v = v << 1 | 1;
} else {
sr = nr; v = v << 1;
}
}
return minq(sl, sr) == sl ? sr : sl;
}
ULL a[SZ], b[SZ], tmp[SZ];
int tp[SZ], qt[SZ], qpos[SZ];
ULL qx[SZ];
int main() {
scanf("%d%d%d", &n, &q, &l);
for(int i = 1; i <= n; i++) scanf("%llu", &a[i]);
for(int i = 1; i <= n; i++) scanf("%llu", &b[i]);
for(int i = 0; i < q; i++) {
scanf("%d", &tp[i]);
if(tp[i] == 1) scanf("%d%d%llu", &qt[i], &qpos[i], &qx[i]);
else scanf("%d", &qt[i]);
}
vector<int> vec;
for(int i = 0; i * 2 < l; i++)
vec.push_back(1 << i | 1 << (l - 1 - i));
while(vec.size() < 6) vec.push_back(0);
vec.resize(6);
for(int i = 0; i < 8; i++) for(int j = 0; j < 3; j++)
if(i >> j & 1) SA[i] += vec[j];
for(int i = 0; i < 8; i++) for(int j = 0; j < 3; j++)
if(i >> j & 1) SB[i] += vec[j + 3];
for(int i = 0; i < 8; i++) {
memset(tmp, 0, sizeof(tmp));
for(int j = 1; j <= n; j++) tmp[j - SA[i] + 65535] = a[j];
tmp[n + 1 - SA[i] + 65535] = BAD;
A[i].init(tmp);
}
for(int i = 0; i < 8; i++) {
memset(tmp, 0, sizeof(tmp));
for(int j = 1; j <= n; j++) tmp[65537 + SB[i] - j] = b[j];
tmp[65537 + SB[i] - n - 1] = BAD;
B[i].init(tmp);
}
vector<ULL> ans;
for(int i = 0; i < q; i++) {
if(tp[i] == 1) {
int t = qt[i], pos = qpos[i]; ULL x = qx[i];
if(t == 1) for(int j = 0; j < 8; j++)
A[j].upd(pos - SA[j] + 65535, x);
else for(int j = 0; j < 8; j++)
B[j].upd(65537 + SB[j] - pos, x);
} else {
int t = qt[i];
bool ok = false;
for(int j = 0; j < 8; j++) for(int k = 0; k < 8; k++)
if(SA[j] + SB[k] == t && !ok) {
ans.push_back(query(j, k));
ok = true;
}
assert(ok);
}
}
printf("! %d\n", (int)ans.size());
for(auto i : ans) printf("%llu ", i);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 41676kb
input:
2 3 2 288230376151711744 864691128455135232 1441151880758558720 2017612633061982208 2 3 1 2 2 2594073385365405696 2 3 1152921504606846976 1152921504606846976 1152921504606846976 1152921504606846976 1152921504606846976 3458764513820540928 1152921504606846976 1152921504606846976 1152921504606846976 40...
output:
A 288230376151711744 864691128455135232 A 288230376151711744 864691128455135232 A 288230376151711744 864691128455135232 A 288230376151711744 864691128455135232 A 288230376151711744 864691128455135232 A 1441151880758558720 2017612633061982208 C 1152921504606846976 3458764513820540928 C 11529215046068...
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 11ms
memory: 42132kb
input:
3 5 3 2017612633061982208 864691128455135232 2305843009213693952 1441151880758558720 2017612633061982208 288230376151711744 2 5 2 2 1 1 3 1729382256910270464 1 2 1 2017612633061982208 2 5 2882303761517117440 3170534137668829184 2882303761517117440 3170534137668829184 5188146770730811392 288230376151...
output:
A 2017612633061982208 864691128455135232 A 864691128455135232 2305843009213693952 A 2017612633061982208 864691128455135232 A 864691128455135232 2305843009213693952 A 2017612633061982208 3170534137668829184 A 2017612633061982208 864691128455135232 A 864691128455135232 2305843009213693952 A 2017612633...
result:
ok 2 lines
Test #3:
score: 0
Accepted
time: 1854ms
memory: 42056kb
input:
16000 20000 14 12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...
output:
A 11048728814583818664 15677818123922243563 A 6866204288908749798 7524845485598995388 A 1068718252472774662 11980183590060892778 A 16451093994246303075 1651242460292755263 A 8054628330105193642 9284689372282485912 A 12924005644596021778 15686791472762219703 A 15540348601681561929 9015834026689566877...
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 1745ms
memory: 41404kb
input:
16000 20000 14 14874916021093924522 12369740409537030379 6287256359015658845 823444916947643237 4526221239260804705 11449122367236060745 5269387146536217002 12271448617436014402 2707995377102611522 953402166614134577 8882130735136249391 5659092195367212151 12689325453646244318 14372002311792512418 7...
output:
A 6699580840817043648 1530312906755215691 A 3778754331816613065 3277995304381861937 A 5796810004253202499 17900425965763201922 A 16087894862382483319 10962991741131899674 A 9399062956659245650 10341669336510826685 A 13155214090337463029 3678974906259452354 A 13258416512718908913 12299727804406423735...
result:
ok 2 lines
Test #5:
score: 0
Accepted
time: 1680ms
memory: 41768kb
input:
16000 20000 14 12315377266285165767 11473010392351879640 7998004721169407057 9573065544888591349 8327463206443780344 16951550409690804427 9014132268830135915 1328673092737196637 5921820488166554289 3905417438586104204 16182336802010099310 4414669279483371512 13388655175283310101 4417487293134062765 ...
output:
A 16646737163382162232 16384065041536563074 A 622375621264508444 4861463594572177469 A 17351712012742734872 16325934726602483649 A 16680849464824298188 1787658897265471541 A 8107465154877872066 8204363257667144067 A 4471449900873850680 6704679822520899332 A 17803294680465360433 18000352387766962329 ...
result:
ok 2 lines
Test #6:
score: 0
Accepted
time: 1617ms
memory: 40792kb
input:
16000 20000 14 12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...
output:
A 11048728814583818664 15677818123922243563 A 6866204288908749798 7524845485598995388 A 1068718252472774662 11980183590060892778 A 16451093994246303075 1651242460292755263 A 8054628330105193642 9284689372282485912 A 12924005644596021778 15686791472762219703 A 15540348601681561929 9015834026689566877...
result:
ok 2 lines
Test #7:
score: 0
Accepted
time: 1507ms
memory: 42624kb
input:
16000 20000 14 14874916021093924522 12369740409537030379 6287256359015658845 823444916947643237 4526221239260804705 11449122367236060745 5269387146536217002 12271448617436014402 2707995377102611522 953402166614134577 8882130735136249391 5659092195367212151 12689325453646244318 14372002311792512418 7...
output:
A 6699580840817043648 1530312906755215691 A 3778754331816613065 3277995304381861937 A 5796810004253202499 17900425965763201922 A 16087894862382483319 10962991741131899674 A 9399062956659245650 10341669336510826685 A 13155214090337463029 3678974906259452354 A 13258416512718908913 12299727804406423735...
result:
ok 2 lines
Test #8:
score: 0
Accepted
time: 1481ms
memory: 41660kb
input:
16000 20000 14 12315377266285165767 11473010392351879640 7998004721169407057 9573065544888591349 8327463206443780344 16951550409690804427 9014132268830135915 1328673092737196637 5921820488166554289 3905417438586104204 16182336802010099310 4414669279483371512 13388655175283310101 4417487293134062765 ...
output:
A 16646737163382162232 16384065041536563074 A 622375621264508444 4861463594572177469 A 17351712012742734872 16325934726602483649 A 16680849464824298188 1787658897265471541 A 8107465154877872066 8204363257667144067 A 4471449900873850680 6704679822520899332 A 17803294680465360433 18000352387766962329 ...
result:
ok 2 lines
Test #9:
score: 0
Accepted
time: 1663ms
memory: 41312kb
input:
16000 20000 14 12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...
output:
A 11048728814583818664 15677818123922243563 A 6866204288908749798 7524845485598995388 A 1068718252472774662 11980183590060892778 A 16451093994246303075 1651242460292755263 A 8054628330105193642 9284689372282485912 A 12924005644596021778 15686791472762219703 A 15540348601681561929 9015834026689566877...
result:
ok 2 lines
Test #10:
score: 0
Accepted
time: 1735ms
memory: 41056kb
input:
16000 20000 14 14874916021093924522 12369740409537030379 6287256359015658845 823444916947643237 4526221239260804705 11449122367236060745 5269387146536217002 12271448617436014402 2707995377102611522 953402166614134577 8882130735136249391 5659092195367212151 12689325453646244318 14372002311792512418 7...
output:
A 6699580840817043648 1530312906755215691 A 3778754331816613065 3277995304381861937 A 5796810004253202499 17900425965763201922 A 16087894862382483319 10962991741131899674 A 9399062956659245650 10341669336510826685 A 13155214090337463029 3678974906259452354 A 13258416512718908913 12299727804406423735...
result:
ok 2 lines
Test #11:
score: 0
Accepted
time: 1683ms
memory: 41412kb
input:
16000 20000 14 12315377266285165767 11473010392351879640 7998004721169407057 9573065544888591349 8327463206443780344 16951550409690804427 9014132268830135915 1328673092737196637 5921820488166554289 3905417438586104204 16182336802010099310 4414669279483371512 13388655175283310101 4417487293134062765 ...
output:
A 16646737163382162232 16384065041536563074 A 622375621264508444 4861463594572177469 A 17351712012742734872 16325934726602483649 A 16680849464824298188 1787658897265471541 A 8107465154877872066 8204363257667144067 A 4471449900873850680 6704679822520899332 A 17803294680465360433 18000352387766962329 ...
result:
ok 2 lines