2020-04-12

求助,输出内容超限

在这里插入图片描述

在这里插入图片描述

输入样例:
2
7 3
1 5 3 1 4 2 2
2 7 4 5 3 3 3
7 7
1 2 3 4 5 6 7
7 7 7 7 7 7 7
输出样例:
Case #1:
6
Case #2:
9

#include <stdio.h>
int main()
{
int T;
scanf("%d",&T);
for(int j=0;j<T;j++)
{
int n,m;
scanf("%d%d",&n,&m);
//n:关卡数 m;强化的使用次数
int s[n]={0},w[n],d[n],t[n]={0};
//w;我方攻击 d:敌方攻击
for(int i=0;i<n;i++)
scanf("%d",&w[i]);

for(int i=0;i<n;i++)
  scanf("%d",&d[i]);
//输入敌我每一关的攻击力  
for(int i=0;i<n;i++)  
{
  s[i]=d[i]-w[i];
  if(s[i]<0)
    s[i]=0;
}
//s:我方每一关受到的伤害 
for(int i=0;i<n;i++)
{
  t[i]=d[i]-2*w[i];
  if(t[i]<0)
    t[i]=0;
}
//t;强化每一关后受到的伤害 
for(int i=0;i<n;i++)  
{
  t[i]=s[i]-t[i];
}
//t;强化后每一关能减少的伤害 
int flag[n]; 
for (int k = 0; k<n; k++) 
{
 int max = 0, min = 0;
 for (int i = 0; i < n; i++) 
  {
 if(t[i] > t[max]) 
    {
 max = i;
 }
 if(t[i] < t[min]) 
    {
 min = i;
 }
 }
 flag[k] = max;
 t[max] = t[min] - 10;
}
//flag;按照减少的伤害由大到小排列下标 
for(int i=0;i<n&&m>0;i++)
{
  s[flag[i]]=d[flag[i]]-2*w[flag[i]];
  if(s[flag[i]]<0)
    s[flag[i]]=0;
  m--;
}
//在减伤最多的几个关卡使用强化技能 ,并计算强化后每一关受到的伤害 
int sh=0;
for(int i=0;i<n;i++)
  sh+=s[i];
//累加每一关受到的伤害,输出 
printf("Case #%d:\n%d\n",j+1,sh);

}
return 0;
}

发布了1 篇原创文章 · 获赞 0 · 访问量 0

猜你喜欢

转载自blog.csdn.net/weixin_46604833/article/details/105464140