QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#208397 | #6770. Ants | ucup-team1004 | WA | 1ms | 7568kb | C++14 | 1.7kb | 2023-10-09 15:57:23 | 2023-10-09 15:57:23 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
template<typename T>
ostream& operator << (ostream &out,const vector<T>&x){
if(x.empty())return out<<"[]";
out<<'['<<x[0];
for(int len=x.size(),i=1;i<len;i++)out<<','<<x[i];
return out<<']';
}
template<typename T>
vector<T> ary(const T *a,int l,int r){
return vector<T>{a+l,a+1+r};
}
template<typename T>
void debug(T x){
cerr<<x<<'\n';
}
template<typename T,typename ...S>
void debug(T x,S ...y){
cerr<<x<<' ',debug(y...);
}
const int N=1e6+10,V=1e9+1;
const ll INF=1e18;
int n,A,B,a[N],d[N];
ll ans[N];
bool cmpA(int x,int y){
return a[x]<a[y];
}
bool cmpB(int x,int y){
return a[x]>a[y];
}
void solve(int lim){
ll res=lim/n*2ll*V;
lim%=n;
vector<int>A,B;
for(int i=1;i<=n;i++){
if(d[i])B.push_back(i);
else A.push_back(i);
}
sort(A.begin(),A.end(),cmpA);
sort(B.begin(),B.end(),cmpB);
if(lim<A.size()){
for(int i=0;i<lim;i++){
ans[A[i]]=min(ans[A[i]],res+a[A[i]]+V+V);
}
for(int i=A.size()-1;i>=lim;i--){
ans[A[i]]=min(ans[A[i]],res+a[A[i]]);
}
for(int i:B){
ans[i]=min(ans[i],res+V+V-a[i]);
}
}else{
lim-=A.size();
for(int i:A){
ans[i]=min(ans[i],res+V+V+a[i]);
}
for(int i=0;i<lim;i++){
ans[B[i]]=min(ans[B[i]],res+V+V-a[B[i]]+V+V);
}
for(int i=B.size()-1;i>=lim;i--){
ans[B[i]]=min(ans[B[i]],res+V+V-a[B[i]]);
}
}
}
int main(){
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]);
fill(ans+1,ans+1+n,INF);
solve(A);
for(int i=1;i<=n;i++){
a[i]=V-a[i],d[i]^=1;
}
solve(B);
ll res=0;
for(int i=1;i<=n;i++){
res=max(res,ans[i]);
}
cout<<res<<endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 7568kb
input:
2 2 4 2 3 0 1
output:
4000000001
result:
ok single line: '4000000001'
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 7508kb
input:
1 1000000000 1000000000 500000000 0
output:
1000000000000000000
result:
wrong answer 1st lines differ - expected: '2000000002500000000', found: '1000000000000000000'