请问是代码过于冗长的原因吗
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int x,int y){
return x>y;
}
int main(){
int A[25],B[25],C[25],D[25];
int a,b,c,d;
cin>>a>>b>>c>>d;
int i;
for(i=1;i<=a;i++){//输入每一个习题集中每一道题的时间
cin>>A[i];
}
for(i=1;i<=b;i++){
cin>>B[i];
}
for(i=1;i<=c;i++){
cin>>C[i];
}
for(i=1;i<=d;i++){
cin>>D[i];
}
int sum=0,sumA=0,sumA1=0,sumA2=0,sumB=0,sumB1=0,sumB2=0,sumC=0,sumC1=0,sumC2=0,sumD=0,sumD1=0,sumD2=0;
if(a==1){//求第一个习题集需要的时间
sumA=A[1];
}else if(a%2==0){//偶数个的情况
sort(A+1,A+a+1,cmp);
for(i=1;i<=a-1;i+=2){
sumA1+=A[i];
sumA2+=A[i+1];
}
sumA=max(sumA1,sumA2);
}else if(a!=1&&a%2==1){//奇数个的情况
sort(A+1,A+a+1,cmp);
for(i=1;i<=a-2;i+=2){
sumA1+=A[i];
sumA2+=A[i+1];
}
if(A[a]>fabs(sumA1-sumA2)){
sumA=max(sumA1,sumA2)+A[a]-fabs(sumA1-sumA2);
}else{
sumA=max(sumA1,sumA2);
}
}
if(b==1){//第二个习题集时间
sumB=B[1];
}else if(b%2==0){
sort(B+1,B+b+1,cmp);
for(i=1;i<=b-1;i+=2){
sumB1+=B[i];
sumB2+=B[i+1];
}
sumB=max(sumB1,sumB2);
}else if(b!=1&&b%2==1){
sort(B+1,B+b+1,cmp);
for(i=1;i<=b-2;i+=2){
sumB1+=B[i];
sumB2+=B[i+1];
}
if(B[b]>fabs(sumB1-sumB2)){
sumB=max(sumB1,sumB2)+B[b]-fabs(sumB1-sumB2);
}else{
sumB=max(sumB1,sumB2);
}
}
if(c==1){//第三个习题集
sumC=C[1];
}else if(c%2==0){
sort(C+1,C+c+1,cmp);
for(i=1;i<=c-1;i+=2){
sumC1+=C[i];
sumC2+=C[i+1];
}
sumC=max(sumC1,sumC2);
}else if(c!=1&&c%2==1){
sort(C+1,C+c+1,cmp);
for(i=1;i<=c-2;i+=2){
sumC1+=C[i];
sumC2+=C[i+1];
}
if(C[c]>fabs(sumC1-sumC2)){
sumC=max(sumC1,sumC2)+C[c]-fabs(sumC1-sumC2);
}else{
sumC=max(sumC1,sumC2);
}
}
if(d==1){//第四个习题集
sumD=D[1];
}else if(d%2==0){
sort(D+1,D+d+1,cmp);
for(i=1;i<=d-1;i+=2){
sumD1+=D[i];
sumD2+=D[i+1];
}
sumD=max(sumD1,sumD2);
}else if(d!=1&&d%2==1){
sort(D+1,D+d+1,cmp);
for(i=1;i<=d-2;i+=2){
sumD1+=D[i];
sumD2+=D[i+1];
}
if(D[d]>fabs(sumD1-sumD2)){
sumD=max(sumD1,sumD2)+D[d]-fabs(sumD1-sumD2);
}else{
sumD=max(sumD1,sumD2);
}
}
sum=sumA+sumB+sumC+sumD;
cout<<sum<<endl;
return 0;
}