QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#205526#7565. Harumachi Kazeucup-team004#AC ✓1676ms8492kbC++203.1kb2023-10-07 16:24:242023-10-07 16:24:25

Judging History

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

  • [2023-10-07 16:24:25]
  • 评测
  • 测评结果:AC
  • 用时:1676ms
  • 内存:8492kb
  • [2023-10-07 16:24:24]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;

ull add(ull x,ull y){
    cout<<"A "<<x<<' '<<y<<endl;
    ull t;cin>>t;
    return t;
}

bool cmp(ull x,ull y){
    cout<<"C "<<x<<' '<<y<<endl;
    ull t;cin>>t;
    return t==x;
}

const int N=100100;

ull sum0[2][N],sum1[2][N],a[2][N];
int n,q,B,id[N],lst[N];
vector<ull>ans;



void Init(int t){
    for(int i=1;i<=n;++i){
        if(id[i]!=id[i-1])
            sum0[t][i]=a[t][i];
        else
            sum0[t][i]=add(sum0[t][i-1],a[t][i]);
        if(id[i]!=id[i+1]){
            if(id[i]==1)
                sum1[t][id[i]]=sum0[t][i];
            else
                sum1[t][id[i]]=add(sum1[t][id[i]-1],sum0[t][i]);
        }
    }
}

void modify(int t,int x,ull y){
    a[t][x]=y;
    int i=x;
    for(;id[i]==id[x];++i){
        if(id[i]!=id[i-1])
            sum0[t][i]=a[t][i];
        else
            sum0[t][i]=add(sum0[t][i-1],a[t][i]);
    }
    --i;
    int j=id[i];
    for(;j<=id[n];++j){
        if(j==1)
            sum1[t][j]=sum0[t][lst[j]];
        else
            sum1[t][j]=add(sum1[t][j-1],sum0[t][lst[j]]);
    }
}

ull get_value(int t,int i){
    if(id[i]==1)
        return sum0[t][i];
    return add(sum0[t][i],sum1[t][id[i]-1]);
}

void query(int k){
    int l=max(k-n,1),r=min(n+1,k);
    while(l<r){
        int mid=(l+r)/2;
        ull x=get_value(0,mid),y=get_value(1,k-mid);
        if(cmp(x,y))
            l=mid+1;
        else
            r=mid;
    }
    int u=l,v=k-l+1;
    if(u>n){
        ans.push_back(get_value(1,v));
        return;
    }
    if(v>n){
        ans.push_back(get_value(0,u));
        return;
    }
    ull p=get_value(1,v),q=get_value(0,u);
    if(cmp(p,q))
        ans.push_back(p);
    else
        ans.push_back(q);
}

vector<array<ull,4> >qry;

vector<int>v;

int clk,cnt[N];

int solve(int l,int r,int pre_sum=0){
    int mid=(l+r)/2;
    long long sum=pre_sum;
    for(int i=l;i<=mid;++i)
        sum+=cnt[i]*(mid-r+1);
    if(sum>=0){
        ++clk;
        for(int i=l;i<=r;++i)
            id[i]=clk,pre_sum+=cnt[i];
        lst[clk]=r;
        return pre_sum;
    }
    int ls=solve(l,mid,pre_sum);
    return solve(mid+1,r,ls);
}

int main(){
    ios::sync_with_stdio(0);
    cin>>n>>q>>B;
    for(int i=1;i<=n;++i)
        cin>>a[0][i];
    for(int i=1;i<=n;++i)
        cin>>a[1][i];
    for(int i=0;i<q;++i){
        ull tp;cin>>tp;
        if(tp==1){
            ull x,y,z;cin>>x>>y>>z;
            qry.push_back(array<ull,4>{tp,x,y,z});
            cnt[y]++;
        }else{
            ull x;cin>>x;
            qry.push_back(array<ull,4>{tp,x,0,0});
        }
    }
    solve(1,n);
    Init(0);Init(1);
    for(int i=0;i<q;++i){
        int tp;tp=qry[i][0];
        if(tp==1){
            modify(qry[i][1]-1,qry[i][2],qry[i][3]);
        }else{
            query(qry[i][1]);
        }
    }
    cout<<"! "<<ans.size()<<endl;
    for(int i=0;i<(int)ans.size();++i)
        cout<<ans[i]<<" \n"[i==(int)ans.size()-1];
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 7740kb

input:

2 3 2
288230376151711744 864691128455135232
1441151880758558720 2017612633061982208
2 3
1 2 2 2594073385365405696
2 3
1152921504606846976
3458764513820540928
1152921504606846976
4035225266123964416
1152921504606846976

output:

A 288230376151711744 864691128455135232
A 1441151880758558720 2017612633061982208
C 1152921504606846976 1441151880758558720
A 1441151880758558720 2594073385365405696
C 1152921504606846976 1441151880758558720
! 2
1441151880758558720 1441151880758558720

result:

ok 2 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 7800kb

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
5188146770730811392
3458764513820540928
3746994889972252672
3458764513820540928
288230376151...

output:

A 2017612633061982208 864691128455135232
A 2882303761517117440 2305843009213693952
A 1441151880758558720 2017612633061982208
A 3458764513820540928 288230376151711744
C 5188146770730811392 3458764513820540928
C 2882303761517117440 3746994889972252672
C 3746994889972252672 5188146770730811392
C 201761...

result:

ok 2 lines

Test #3:

score: 0
Accepted
time: 1541ms
memory: 8436kb

input:

16000 20000 14
12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...

output:

A 12381691541923575949 2314459967875656919
A 15240288079556723088 320873566057825844
A 14696151509799232868 16557653430916204485
A 1013209648229540810 17538037439317817183
A 104503013837806377 11476444495745028170
A 12577439294884490100 14967174865083701448
A 12807060867005885737 9097870086258639932...

result:

ok 2 lines

Test #4:

score: 0
Accepted
time: 1615ms
memory: 6856kb

input:

16000 20000 14
14874916021093924522 12369740409537030379 6287256359015658845 823444916947643237 4526221239260804705 11449122367236060745 5269387146536217002 12271448617436014402 2707995377102611522 953402166614134577 8882130735136249391 5659092195367212151 12689325453646244318 14372002311792512418 7...

output:

A 14874916021093924522 12369740409537030379
A 6287256359015658845 823444916947643237
A 9794404142223058838 7110701275963302082
A 4526221239260804705 11449122367236060745
A 15975343606496865450 5269387146536217002
A 3794478464625186389 12271448617436014402
A 16905105418186360920 17062418867362856344
...

result:

ok 2 lines

Test #5:

score: 0
Accepted
time: 1676ms
memory: 6764kb

input:

16000 20000 14
12315377266285165767 11473010392351879640 7998004721169407057 9573065544888591349 8327463206443780344 16951550409690804427 9014132268830135915 1328673092737196637 5921820488166554289 3905417438586104204 16182336802010099310 4414669279483371512 13388655175283310101 4417487293134062765 ...

output:

A 12315377266285165767 11473010392351879640
A 6338135370229149344 7998004721169407057
A 14336140091398556401 9573065544888591349
A 8327463206443780344 16951550409690804427
A 6832269542425033155 9014132268830135915
A 15846401811255169070 1328673092737196637
A 6458953347879251687 18171566689294021260
...

result:

ok 2 lines

Test #6:

score: 0
Accepted
time: 830ms
memory: 8360kb

input:

16000 20000 14
12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...

output:

A 12381691541923575949 2314459967875656919
A 15240288079556723088 320873566057825844
A 14696151509799232868 16557653430916204485
A 1013209648229540810 17538037439317817183
A 104503013837806377 11476444495745028170
A 12577439294884490100 14967174865083701448
A 12807060867005885737 9097870086258639932...

result:

ok 2 lines

Test #7:

score: 0
Accepted
time: 899ms
memory: 8264kb

input:

16000 20000 14
14874916021093924522 12369740409537030379 6287256359015658845 823444916947643237 4526221239260804705 11449122367236060745 5269387146536217002 12271448617436014402 2707995377102611522 953402166614134577 8882130735136249391 5659092195367212151 12689325453646244318 14372002311792512418 7...

output:

A 14874916021093924522 12369740409537030379
A 6287256359015658845 823444916947643237
A 9794404142223058838 7110701275963302082
A 4526221239260804705 11449122367236060745
A 15975343606496865450 5269387146536217002
A 3794478464625186389 12271448617436014402
A 16905105418186360920 17062418867362856344
...

result:

ok 2 lines

Test #8:

score: 0
Accepted
time: 978ms
memory: 8360kb

input:

16000 20000 14
12315377266285165767 11473010392351879640 7998004721169407057 9573065544888591349 8327463206443780344 16951550409690804427 9014132268830135915 1328673092737196637 5921820488166554289 3905417438586104204 16182336802010099310 4414669279483371512 13388655175283310101 4417487293134062765 ...

output:

A 12315377266285165767 11473010392351879640
A 7998004721169407057 9573065544888591349
A 6338135370229149344 17571070266057998406
A 8327463206443780344 16951550409690804427
A 6832269542425033155 9014132268830135915
A 15846401811255169070 1328673092737196637
A 6458953347879251687 18171566689294021260
...

result:

ok 2 lines

Test #9:

score: 0
Accepted
time: 1670ms
memory: 8432kb

input:

16000 20000 14
12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...

output:

A 12381691541923575949 2314459967875656919
A 15240288079556723088 320873566057825844
A 14696151509799232868 16557653430916204485
A 1013209648229540810 17538037439317817183
A 104503013837806377 11476444495745028170
A 12577439294884490100 14967174865083701448
A 12807060867005885737 9097870086258639932...

result:

ok 2 lines

Test #10:

score: 0
Accepted
time: 1519ms
memory: 8492kb

input:

16000 20000 14
14874916021093924522 12369740409537030379 6287256359015658845 823444916947643237 4526221239260804705 11449122367236060745 5269387146536217002 12271448617436014402 2707995377102611522 953402166614134577 8882130735136249391 5659092195367212151 12689325453646244318 14372002311792512418 7...

output:

A 14874916021093924522 12369740409537030379
A 6287256359015658845 823444916947643237
A 9794404142223058838 7110701275963302082
A 4526221239260804705 11449122367236060745
A 15975343606496865450 5269387146536217002
A 3794478464625186389 12271448617436014402
A 16905105418186360920 17062418867362856344
...

result:

ok 2 lines

Test #11:

score: 0
Accepted
time: 1655ms
memory: 8384kb

input:

16000 20000 14
12315377266285165767 11473010392351879640 7998004721169407057 9573065544888591349 8327463206443780344 16951550409690804427 9014132268830135915 1328673092737196637 5921820488166554289 3905417438586104204 16182336802010099310 4414669279483371512 13388655175283310101 4417487293134062765 ...

output:

A 12315377266285165767 11473010392351879640
A 7998004721169407057 9573065544888591349
A 6338135370229149344 17571070266057998406
A 8327463206443780344 16951550409690804427
A 6832269542425033155 9014132268830135915
A 15846401811255169070 1328673092737196637
A 6458953347879251687 18171566689294021260
...

result:

ok 2 lines