В какие дни следует продавать волосы, чтобы получить максимальную прибыль? - C#
Формулировка задачи:
Одного неформала выгнали с работы, и теперь ему надо как-то зарабатывать себе на жизнь. Поразмыслив, он решил, что сможет иметь очень неплохие деньги на продаже собственных волос. Известно, что пункты приема покупают волосы произвольной длины стоимостью С у.е. за каждый сантиметр. Так как волосяной рынок является очень динамичным, то цена одного сантиметра волос меняется каждый день как и курс валют. Неформал является очень хорошим бизнес-аналитиком. Он смог вычислить, какой будет цена одного сантиметра волос в каждый из ближайших N дней (для удобства пронумеруем дни в хронологическом порядке от 0 до N-1). Теперь он хочет определить, в какие из этих дней ему следует продавать волосы, чтобы по истечению всех N дней заработать максимальное количество денег. Заметим, что волосы у неформала растут только ночью и вырастают на 1 сантиметр за ночь. Следует также учесть, что до 0-го дня неформал с горя подстригся наголо и к 0-му дню длина его волос составляла 1 сантиметр.
Помогите пожалуйста
Решение задачи: «В какие дни следует продавать волосы, чтобы получить максимальную прибыль?»
textual
Листинг программы
#include <fstream.h>
#include <fstream.h>
void main(){
ifstream fin ("input.txt");
ofstream fout ("output.txt");
int c[100],i,max=0,last=-1,s=0,n;
fin>> n; // input
for (i=0;i< n;i++) fin> > c[ i ];
fin.close();
if (n=1) fout<<a[0] else
do{
for (i=max;i<n;i++)
if (c[ i ]> c[max])
max=i; //max - максимальная цена
s+=(max-last)*c[max]; // Количество дней, прошедших с момента последней продажи * на максимальную цену
last=max++; // день последней продажи
}while (max<n);
fout<<s;
fout.close();
}