题目描述
解题代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main(){
vector<int>x1,x2,y1,y2,z1,z2;
int n,x0=0,y0=0,z0=0;
cin>>n;
int q[n],w[n],e[n];
for(int i=0;i<n;i++){
cin>>q[i];
}
for(int i=0;i<n;i++){
cin>>w[i];
}
for(int i=0;i<n;i++){
cin>>e[i];
}
for(int i=0;i<n;i++){
int a=q[i]-w[i]-e[i];
int b=w[i]-q[i]-e[i];
int c=e[i]-q[i]-w[i];
if(a<0) x1.push_back(a);else if(a==0) x0++;else if(a>0) x2.push_back(a);
if(b<0) y1.push_back(b);else if(b==0) y0++;else if(b>0) y2.push_back(b);
if(c<0) z1.push_back(c);else if(c==0) z0++;else if(c>0) z2.push_back(c);
}
sort(x1.begin(),x1.end(),greater<int>());
sort(y1.begin(),y1.end(),greater<int>());
sort(z1.begin(),z1.end(),greater<int>());
int ans1=0,ans2=0,ans3=0;
if(!x2.empty()){
ans1+=x0;
ll sum=0;
for(auto it=x2.begin();it!=x2.end();it++){
sum+=*it;
ans1++;
}
for(auto it=x1.begin();it!=x1.end();it++){
sum+=*it;
if(sum>0){
ans1++;
}else{
break;
}
}
}
if(!y2.empty()){
ans2+=z0;
int sum=0;
for(auto it=y2.begin();it!=y2.end();it++){
sum+=*it;
ans2++;
}
for(auto it=y1.begin();it!=y1.end();it++){
sum+=*it;
if(sum>0){
ans2++;
}else{
break;
}
}
}
if(!z2.empty()){
ans3+=z0;
int sum=0;
for(auto it=z2.begin();it!=z2.end();it++){
sum+=*it;
ans3++;
}
for(auto it=z1.begin();it!=z1.end();it++){
sum+=*it;
if(sum>0){
ans3++;
}else{
break;
}
}
}
int ans=max(ans3,max(ans1,ans2));
if(ans==0){
cout<<-1;
}else{
cout<<ans;
}
return 0;
}