QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#205526 | #7565. Harumachi Kaze | ucup-team004# | AC ✓ | 1676ms | 8492kb | C++20 | 3.1kb | 2023-10-07 16:24:24 | 2023-10-07 16:24:25 |
Judging History
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