QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#205724 | #7565. Harumachi Kaze | ucup-team052# | WA | 1309ms | 4800kb | C++23 | 2.9kb | 2023-10-07 17:09:12 | 2023-10-07 17:09:13 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define eb emplace_back
//mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
#define mod 998244353
#define ll long long
#define u64 unsigned long long
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
inline u64 read()
{
char ch=getchar(); while(!isdigit(ch)) {ch=getchar();}
u64 ans=0; while(isdigit(ch)) {ans=ans*10+ch-48;ch=getchar();}
return ans;
}
void print(vector<u64> x){for(int i=0;i<(int)x.size();i++) printf("%llu%c",x[i]," \n"[i==(int)x.size()-1]);}
#define N 20005
int n,Q,B;
const int SIZ=125;
int _cnt=0;
u64 Add(u64 x,u64 y)
{
_cnt++;
assert(_cnt<=1600000);
#ifdef wasa855
return x+y;
#endif
printf("A %llu %llu\n",x,y); fflush(stdout);
return read();
}
u64 Cmp(u64 x,u64 y)
{
_cnt++;
assert(_cnt<=1600000);
#ifdef wasa855
return x<y?x:y;
#endif
printf("C %llu %llu\n",x,y); fflush(stdout);
return read();
}
struct Arr
{
u64 a[N];
u64 bs[N],sum[N],pre[N];
int cnt;
map<int,u64> tb;
void init()
{
cnt=0;
for(int i=0;i<n;i+=SIZ)
{
pre[i]=a[i];
sum[cnt]=pre[i];
for(int j=1;i+j<n&&j<SIZ;j++) pre[i+j]=Add(pre[i+j-1],a[i+j]),sum[cnt]=pre[i+j];
cnt++;
bs[cnt]=Add(bs[cnt-1],sum[cnt]);
}
}
u64 qry(int i)
{
if(tb.find(i)!=tb.end()) return tb[i];
if(i==n) assert(0);
return tb[i]=Add(bs[i/SIZ],pre[i]);
}
void upd(int i,u64 v)
{
tb.clear();
a[i]=v;
// printf("* %d %d\n",i,v);
int tw=i/SIZ;
pre[tw*SIZ]=a[tw*SIZ];
sum[tw]=pre[tw*SIZ];
for(int j=max(1,i-tw*SIZ);j<SIZ&&tw*SIZ+j<n;j++) pre[tw*SIZ+j]=Add(pre[tw*SIZ+j-1],a[tw*SIZ+j]),sum[tw]=pre[tw*SIZ+j];
for(int i=max(1,tw);i<cnt;i++) bs[i]=Add(bs[i-1],sum[i]);
}
}a,b;
int op[N],t[N],pos[N];
u64 x[N];
signed main()
{
cin>>n>>Q>>B;
for(int i=0;i<n;i++) a.a[i]=read();
for(int i=0;i<n;i++) b.a[i]=read();
for(int i=1;i<=Q;i++)
{
op[i]=read();
if(op[i]==1) t[i]=read(),pos[i]=read()-1,x[i]=read();
else t[i]=read();
}
a.init(),b.init();
vector<u64> ANS;
for(int i=1;i<=Q;i++)
{
if(op[i]==1)
{
if(t[i]==1) a.upd(pos[i],x[i]);
else b.upd(pos[i],x[i]);
}
else
{
if(t[i]==2*n)
{
u64 A=a.qry(n-1),B=b.qry(n-1);
if(Cmp(A,B)==A) ANS.pb(B);
else ANS.pb(A);
continue;
}
int L=min(n-1,t[i]-2);
int l=0,r=min(n-1,t[i]-2),ans=L+1;
while(l<=r)
{
int mid=(l+r)/2;
if(t[i]-mid-2>=n)
{
l=mid+1;
continue;
}
u64 A=a.qry(mid),B=b.qry(t[i]-mid-2);
if(Cmp(A,B)==B) ans=mid,r=mid-1;
else l=mid+1;
}
if(ans==n) ANS.pb(b.qry(t[i]-n-1));
else
{
u64 A=a.qry(ans),B=b.qry(t[i]-ans-1);
// printf("%d %d - %d %d\n",ans,t[i]-ans-1,A,B);
ANS.pb(Cmp(A,B));
}
}
// for(int i=0;i<n;i++) printf("%d%c",b.qry(i)," \n"[i==n-1]);
}
printf("! %d\n",(int)ANS.size());
print(ANS);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3644kb
input:
2 3 2 288230376151711744 864691128455135232 1441151880758558720 2017612633061982208 2 3 1 2 2 2594073385365405696 2 3 1152921504606846976 0 3458764513820540928 0 288230376151711744 3458764513820540928 288230376151711744 1152921504606846976 1441151880758558720 1152921504606846976 4035225266123964416 ...
output:
A 288230376151711744 864691128455135232 A 0 0 A 1441151880758558720 2017612633061982208 A 0 0 A 0 288230376151711744 A 0 3458764513820540928 C 288230376151711744 3458764513820540928 A 0 1152921504606846976 A 0 1441151880758558720 C 1152921504606846976 1441151880758558720 A 1441151880758558720 259407...
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 1ms
memory: 3672kb
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 0 3458764513820540928 3746994889972252672 0 2882303761517117440 37469948...
output:
A 2017612633061982208 864691128455135232 A 2882303761517117440 2305843009213693952 A 0 0 A 1441151880758558720 2017612633061982208 A 3458764513820540928 288230376151711744 A 0 0 A 0 2882303761517117440 A 0 3746994889972252672 C 2882303761517117440 3746994889972252672 A 0 5188146770730811392 A 0 3458...
result:
ok 2 lines
Test #3:
score: -100
Wrong Answer
time: 1309ms
memory: 4800kb
input:
16000 20000 14 12381691541923575949 2314459967875656919 15240288079556723088 320873566057825844 1013209648229540810 17538037439317817183 11476444495745028170 14967174865083701448 17232652930598276562 7175999203534983334 4597650078600036201 13978217693115848142 17682091621678261784 488328147143975490...
output:
A 12381691541923575949 2314459967875656919 A 14696151509799232868 15240288079556723088 A 12486187300948059893 320873566057825844 A 12807060867005885737 1013209648229540810 A 13820270515235426547 17538037439317817183 A 13908055666145347667 11476444495745028170 A 7934247873482479774 149671748650837014...
result:
wrong answer 2nd lines differ - expected: '5509211311101668276 1762307890...5382128526 16566437203220404024', found: '10256016779930563988 130564791...96804672217 6870683023630547150'