QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#207336 | #6770. Ants | veg# | WA | 1ms | 5908kb | C++23 | 1.9kb | 2023-10-08 14:26:24 | 2023-10-08 14:26:24 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e6+10;
int a[maxn];
int d[maxn];
int main()
{
int n,A,B;ll left,right;
scanf("%d%d%d",&n,&A,&B);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&d[i]);
int len=2000000002;
left=0,right=2.1e18;
while(left<=right)
{
ll mid=left+right>>1,cnt=0;
for(int i=1;i<=n;i++)
if(d[i]) cnt+=(mid+a[i])/len;
else cnt+=(mid+len-a[i])/len;
if(cnt>=A) right=mid-1;
else left=mid+1;
}
ll ta=left;
left=0,right=2.1e18;
while(left<=right)
{
ll mid=left+right>>1,cnt=0;
for(int i=1;i<=n;i++)
if(!d[i]) cnt+=(mid+a[i])/len;
else cnt+=(mid+len-a[i])/len;
if(cnt>=B) right=mid-1;
else left=mid+1;
}
ll tb=left;
if(ta<=tb)
{
vector<int> vec;
int ans=0;
for(int i=1;i<=n;i++)
if(!d[i])
{
B-=(ta+len-a[i])/len;
a[i]=(ta+len-a[i])%len;
if(a[i]<=len/2) vec.push_back(a[i]);
else ans=max(ans,len-a[i]);
}
else
{
B-=(ta+a[i])/len;
a[i]=(ta+a[i])%len;
if(a[i]<=len/2) vec.push_back(a[i]);
else ans=max(ans,len-a[i]);
}
sort(vec.begin(),vec.end());
if(!vec.size()) printf("%lld\n",ta+ans);
else if(B<=0) printf("%lld\n",ta+max(ans,len/2-vec[0]));
else printf("%lld\n",ta+max(ans,len-vec[max(0,(int)(vec.size()-B))]));
}
else
{
vector<int> vec;
int ans=0;
for(int i=1;i<=n;i++)
if(d[i])
{
A-=(tb+len-a[i])/len;
a[i]=(tb+len-a[i])%len;
if(a[i]<=len/2) vec.push_back(a[i]);
else ans=max(ans,len-a[i]);
}
else
{
A-=(tb+a[i])/len;
a[i]=(tb+a[i])%len;
if(a[i]<=len/2) vec.push_back(a[i]);
else ans=max(ans,len-a[i]);
}
sort(vec.begin(),vec.end());
if(!vec.size()) printf("%lld\n",tb+ans);
else if(A<=0) printf("%lld\n",tb+max(ans,len/2-vec[0]));
else printf("%lld\n",tb+max(ans,len-vec[max(0,(int)(vec.size()-A))]));
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5908kb
input:
2 2 4 2 3 0 1
output:
4000000001
result:
ok single line: '4000000001'
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 5876kb
input:
1 1000000000 1000000000 500000000 0
output:
2000000001499999999
result:
wrong answer 1st lines differ - expected: '2000000002500000000', found: '2000000001499999999'