QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#962618 | #7565. Harumachi Kaze | bunH2O | WA | 1ms | 30092kb | C++14 | 4.2kb | 2025-04-02 22:18:31 | 2025-04-02 22:18:31 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<cmath>
#include<ctime>
#include<cassert>
using namespace std;
typedef __int128 ll;
typedef unsigned long long ull;
typedef pair<ll,ll> pll;
typedef pair<int,int> pii;
const ll inf=9e18;
const ll mod=1e9+87;
inline ll read()
{
// ll x=0,f=1;
// char ch=getchar();
// while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
// while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
// return x*f;
ull x;cin>>x;return x;
}
inline char getc()
{
char ch=getchar();
while(ch!='0'&&ch!='1'){ch=getchar();}
return ch;
}
ll add(ull x,ull y)
{
if(x<0)return y;
if(y<0)return x;
cout<<"A "<<x<<' '<<y<<endl;
ull r;cin>>r;return r;
}
bool cmp(ull x,ull y)
{
assert(x>=0&&y>=0);
cout<<"C "<<x<<' '<<y<<endl;
ull p;cin>>p;return (p!=y);
}
ll n,q,B,m;
ll a[100005],b[100005];
ll qtp[100005],qt[100005],qpos[100005],qx[100005];
ll lg2[100005],id[100005][21][2];
struct node
{
ll ls,rs,x;
}tree[800005];
ll cntn=2;
void pushup(ll rt)
{
ll ls=tree[rt].ls,rs=tree[rt].rs;
if(tree[ls].x<0)tree[rt].x=tree[rs].x;
else if(tree[rs].x<0)tree[rt].x=tree[ls].x;
else tree[rt].x=add(tree[ls].x,tree[rs].x);
}
void build(ll rt,ll l,ll r,bool tp)
{
id[l][lg2[r-l+1]][tp]=rt;
if(l==r)
{
tree[rt].x=(l<=n?(!tp?a[l]:b[l]):-1);
return;
}
ll mid=(l+r)>>1;
tree[rt].ls=(++cntn),tree[rt].rs=(++cntn);
build(tree[rt].ls,l,mid,tp),build(tree[rt].rs,mid+1,r,tp);
// cout<<rt<<' '<<l<<' '<<r<<' '<<tree[rt].x<<'\n';
pushup(rt);
}
void upd(ll rt,ll l,ll r,ll pos,ll x)
{
if(l==r)
{
tree[rt].x=x;
return;
}
ll mid=(l+r)>>1,ls=tree[rt].ls,rs=tree[rt].rs;
if(pos<=mid)upd(ls,l,mid,pos,x);
if(mid+1<=pos)upd(rs,mid+1,r,pos,x);
pushup(rt);
}
ull res[100005],cntr;
void solve()
{
n=read(),q=read(),B=read();
for(int i=1;i<=n;i++)a[i]=read();
for(int i=1;i<=n;i++)b[i]=read();
for(int i=1;i<=q;i++)
{
qtp[i]=read();
if(qtp[i]==1)qt[i]=read(),qpos[i]=read(),qx[i]=read();
else qx[i]=read();
}
m=16384;
lg2[0]=-1;for(int i=1;i<=m;i++)lg2[i]=lg2[i>>1]+1;
build(1,1,m,0),build(2,1,m,1);
for(int i=1;i<=q;i++)
{
ll op=qtp[i];
if(op==1)
{
ll t=qt[i],pos=qpos[i],x=qx[i];
upd(t,1,m,pos,x);
}
if(op==2)
{
cntr++;
ll k=qx[i]-1,pa=0,pb=0,ida=-1,idb=-1;
while(k)
{
if(pa==n||pb==n)break;
ll p=lg2[(k+1)/2],rida=0,ridb=0;
if(pa+(1<<p)<=n)rida=add(ida,tree[id[pa+1][p][0]].x);
else rida=1;
if(pb+(1<<p)<=n)ridb=add(idb,tree[id[pb+1][p][1]].x);
else ridb=2;
bool ok=cmp(rida,ridb);
if(ok)ida=rida,k-=min(n-pa,(__int128)(1<<p)),pa=min(pa+(1<<p),n);
else idb=ridb,k-=min(n-pb,(__int128)(1<<p)),pb=min(pb+(1<<p),n);
}
if(pa==n)
{
k++;
for(int j=20;j>=0;j--)
{
if((1<<j)&k)idb=add(idb,tree[id[pb+1][j][1]].x),pb+=(1<<j);
}
res[cntr]=idb;
continue;
}
if(pb==n)
{
k++;
for(int j=20;j>=0;j--)
{
if((1<<j)&k)ida=add(ida,tree[id[pa+1][j][0]].x),pa+=(1<<j);
}
res[cntr]=ida;
continue;
}
ida=add(ida,tree[id[pa+1][0][0]].x),idb=add(idb,tree[id[pb+1][0][1]].x);
if(cmp(ida,idb))res[cntr]=ida;
else res[cntr]=idb;
}
}
cout<<"! "<<cntr<<endl;
for(int i=1;i<=cntr;i++)cout<<res[i]<<' ';cout<<endl;
}
int main()
{
// freopen("prob.in","r",stdin);
// freopen("prob1.out","w",stdout);
clock_t start=clock();
ll c=0,t=1;
while(t--)solve();
clock_t end=clock();
// cerr<<(end-start)*1.00/CLOCKS_PER_SEC<<'\n';
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 30092kb
input:
2 3 2 288230376151711744 864691128455135232 1441151880758558720 2017612633061982208 2 3 1 2 2 2594073385365405696 2 3 1152921504606846976 3458764513820540928 288230376151711743 1441151880758558719 288230376151711743 1152921504606846975 1441151880758558719 1152921504606846975 1441151880758558719 4035...
output:
A 288230376151711744 864691128455135232 A 1441151880758558720 2017612633061982208 A 18446744073709551615 288230376151711744 A 18446744073709551615 1441151880758558720 C 288230376151711743 1441151880758558719 A 288230376151711743 864691128455135232 A 18446744073709551615 1441151880758558720 C 1152921...
result:
wrong answer 2nd lines differ - expected: '1441151880758558720 1441151880758558720', found: '1441151880758558719 1441151880758558719'