QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#553478#7565. Harumachi Kazeucup-team1231AC ✓1854ms42624kbC++143.4kb2024-09-08 14:00:022024-09-08 14:00:03

Judging History

你现在查看的是最新测评结果

  • [2024-09-08 14:00:03]
  • 评测
  • 测评结果:AC
  • 用时:1854ms
  • 内存:42624kb
  • [2024-09-08 14:00:02]
  • 提交

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;
}

詳細信息

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