刚开始就抓狂的新手求助信,以下是我的代码
#include <iostream>
#include <algorithm>
using namespace std;
int n;
long long c[200005],d[200005];
long long e[200005];
struct node{
long long sum;
int num;
}b[200005],a[200005];
int cmp(const void* p1,const void* p2){
return (((node*)p1)->sum-((node*)p2)->sum);
}
long long mi(long long a,long long b){
if(a>b) return a;
else return b;
}
int main(){
cin>>n;
for(int i=0;i<n+1;i++) cin>>a[i].sum,a[i].num=i;
for(int i=0;i<n;i++) {
cin>>b[i].sum;
b[i].num=i;
}
qsort(a,(n+1),sizeof(a[0]),cmp);
qsort(b,n,sizeof(b[0]),cmp);
for(int i=0,j=n;i<n;i++,j--){
if(i==0) {
c[i]=mi(a[i].sum-b[i].sum,0);
d[j]=mi(a[j].sum-b[j-1].sum,0);
}
else {
c[i]=mi(a[i].sum-b[i].sum,c[i-1]);
d[j]=mi(a[j].sum-b[j-1].sum,d[j+1]);
}
// for(int k=0;k<n+1;k++) cout<<c[k]<<" ";
// cout<<endl;
// for(int k=0;k<n+1;k++) cout<<d[k]<<" ";
// cout<<endl;
}
for(int i=0;i<=n;i++)
e[a[i].num]=mi(c[i-1],d[i+1]);
e[0]=d[1],e[n]=c[n-1];
for(int i=0;i<n+1;i++) cout<<e[i]<<" ";
return 0;
}
感觉已经能过了,但是只过了三个样例,其余的全部wa了,请问有大佬知道是为什么吗,求求了,救救孩子吧