问题描述:
某个小村庄里面有一个农民小明,他一开始一天可以生产L 个玉米,在接下来的每天里,他可以选择让自己的生产能力+1(当天不生产),或者生产L 个玉米,但是距离冬天到来只有N 天了,他必须在冬天到来之前储备尽可能多的玉米过冬,可是每天都会有地主来收玉米,如果不能交出足够的玉米,地主会没收小明的土地,于是小明请求你帮忙计算他最后最多可以留下多少玉米?如果在中途不能满足地主要求,就输出“Died”。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int day, production,i;
scanf("%d%d",&day,&production);
int *a = new int [day];
for (i = 0; i < day; i++)
scanf("%d",&a[i]);
int final_num = 0;
for (i = 0; i < day; i++)
{
if (final_num + production< a[i])
{
final_num = -1;
break;
}
else if(final_num < a[i])
final_num += production - a[i];
else if (production < day - i -1)
{
production++;
final_num -= a[i];
}
else
final_num += production - a[i];
}
if (final_num > 0)
printf("%d",final_num);
else
printf("Died");
delete []a;
return 0;
}
/*
输入示例:
5 2
1 1 1 4 2
输出示例:
2
*/