#include <math.h>
#include <string.h>
#include <stdbool.h>
#include <stdio.h>
void getNum(char buff[],int num[])
{
int len=strlen(buff),i,j,count=0,wei[20],times=0;
bool ctoi=0,befctoi=0;
for(i=0;i<len+1;i++)
{
if(buff[i]>='0'&&buff[i]<='9')
{
ctoi=1;
}
else
{
ctoi=0;
}
if(befctoi==0&&ctoi==1)
{
wei[count]=buff[i]-'0';
befctoi=1;
count++;
}
else if(befctoi==1&&ctoi==1)
{
wei[count]=buff[i]-'0';
count++;
}
else if(befctoi==1&&ctoi==0)
{
for(j=0;j<count;j++)
{
num[times]+=wei[j]*pow(10,count-j-1);
}
times++;
befctoi=0;
count=0;
}
}
}
int getMax(int total[],int m)
{
int max = total[0];
for (int i=0;i<m;i++)
{
if (max <total[i])
max = total[i];
}
return max;
}
int getMaxadd(int total[],int max,int m)
{
int j=0;
for (int i=0;i<m;i++)
{
if (total[i]==max)
j=i;
}
return j;
}
int getSum(int total[],int m)
{
int sum = 0;
for (int i=0;i<m;i++)
sum = sum+total[i];
return sum;
}
int main()
{
FILE *fp = NULL;
int m = 0;
int n = 0;
int A = 0;
int sum[100] = {0};
int total[100] = {0};
char buff[255];
int num[100]={0};
fp = fopen("./test.txt", "r");
fgets(buff, 255, (FILE*)fp);
printf("生产时间、滞留时间: %s\n", buff );
getNum(buff,num);
n=num[0];
m=num[1];
num[0]=0;
num[1]=0;
fgets(buff, 255, (FILE*)fp);
printf("储存成本: %s\n", buff );
getNum(buff,num);
sum[0]=num[0];
total[0]=num[0];
for(int i=1;i<m;i++)
{
sum[i]=sum[i-1]+num[i];
total[i]=num[i];
}
for(int i=m;i<n;i++)
{
if (num[i]>getMax(total,m))
{
sum[i]= getSum(total,m);
}
else
{
total[getMaxadd(total,getMax(total,m),m)]=num[i];
sum[i]= getSum(total,m);
}
}
for(int i=n;i<m+n;i++)
{
total[getMaxadd(total,getMax(total,m),m)]=0;
sum[i]= getSum(total,m);
}
for(int i=0;i<m+n;i++)
A = A+sum[i];
printf("储存成本之和最低需要: %i\n",A);
return 0;
}