求助,输出内容超限
输入样例:
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;
}