Задача за парти клуб :)
Здравейте,
децата ми имат следната задача:
Зад. Парти център има собствена зала с капацитет на ден от А на брой партита по 1 час с участие максимум на В на брой деца във всяко. При недостиг наемат до три пъти по 1 час на ден втора зала за P деца на цена Х лв на час.
Децата, които не са включени в партитата през деня се прехвърлят (добавят към заявката) за следващ ден. На всеки К-ти ден правят компенсаторно парти за 1 час и наемат огромна зала за останалите деца на цена Y лв.
За следващите N дена вече са получили заявките. Стремят се всяко парти да бъде с максималния възможен брой деца. Между две партита не изчисляваме време – приемаме, че всяко следващо започва веднага след предходното. За собствената си зала естествено не заплащат наем. В един ден може да се наеме или втората или компенсаторната зала. Партитата трябва да се организират за Nте дни и ако се налага, последния ден се наема залата за компенсаторно парти.
Съставете програма, която изчислява минималните разходи на парти-центъра при така постъпилите заявки.
Вход: На първия ред на входа се въвеждат числата А (бр на ден), B (бр деца в парти), P (деца за втора зала), X (лв за 2 зала), K (на кой ден има комп зала) и Y (сума за нея).
На втория ред на входа се въвежда N (за колко дена са заявките) нека да е 3.
На третия ред на входа се въвеждат N на брой числа, показващи броя деца заявили желание за участие (за колкото дни са заявките толкова броя деца за всеки ден)
Изход: На единствен ред изведете минималната възможна цена за включване на всички деца в партитата.
Ограничения:
1 <= А, B, P, X, K, Y <= 1000
3 <= N <= 10 000
1 <= брой желаещи за деня <= 10 000 000
Примери:
Вход: 4 10 20 62 5 100
7
82 195 200 74 30 181 202
Изход: 1130
Написахме следния код, но не ни се получава изхода :)
#include <iostream>
using namespace std;
int main()
{
long i,n;
int a,b,p,x,k,y;
int sum=0,d,den=0,f1=0;
cin>>a>>b>>p>>x>>k>>y;
cin>>n;
for(i=1;i<=n;i++){
cin>>d;den=den+1;
if(d<=(b*a)&&den<k)sum=sum+0;
if(d>(b*a)&&den<k){
int m=d-(a*b);
if (m/p<3){
if(m%p==0)sum=sum+(m/p)*x;
else {sum=sum+(m/p)*x+x;}}
if(m/p==3){sum=sum+3*x;}
else if (m/p>3){f1++;sum=sum+3*x;}}
else if ((d>=a*b)&&(den==k)) {sum=sum+y;den=0;f1=0;}
else if ((d<a*b)&&(den==k && f1!=0)) {sum=sum+y;den=0;f1=0;}
else if ((d<a*b)&&(den==k && f1==0)) {sum=sum+0;den=0;f1=0;}}
cout<<sum<<endl;
return 0;
}
Ще съм Ви благодарен, ако ни помогнете :)