0分样例过
查看原帖
0分样例过
1404938
SnowZ楼主2024/10/19 18:32
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int sum = 0;
struct Subject
{
  int n;
  int t[21];
};
struct Subject s[4];
int cmp(const void* a, const void* b){
  return *(int*)b - *(int*)a;
}

void cnt(int i, int max, int n, int start){
  if(start >= n){
    sum += max;
    return;
  }
  for(int j = start; j < n; j++){
    if(max < s[i].t[j]){
      max = s[i].t[j];
      printf("%d\n",max);
      cnt(i, max, n, j + 1);
    }
    else{
      sum += s[i].t[j];
    }
    max -= s[i].t[j];
  }
  sum += max;
  return;
}

int main()
{
  memset(s, 0, sizeof(struct Subject) * 4);
  scanf("%d %d %d %d",&s[0].n, &s[1].n, &s[2].n, &s[3].n);
  for(int i = 0; i < 4; i++){
    for(int j = 0; j < s[i].n; j++){
      scanf("%d",&s[i].t[j]);
    }
  }
  

  for(int i = 0; i < 4; i++){
    if(s[i].n > 1){
      qsort(s[i].t, s[i].n, sizeof(int), cmp);

      int max = s[i].t[0];
      cnt(i, max, s[i].n, 1);
    }
    else sum += s[i].t[0];

  }
  printf("%d",sum);
}
2024/10/19 18:32
加载中...