Pagini recente » Cod sursa (job #2958788) | Cod sursa (job #626699)
Cod sursa(job #626699)
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
ifstream in("carnati.in");
ofstream out("carnati.out");
const int a = 1500;
int chart[1500];
int Start =0;
int Stop =0;
int profit =0;
int summax()
{
int suma=0;
int sumamax = -9999999;
for (int i =0; i<1500;i++)
{
if(suma<0)
{
suma =0;
}
suma += chart[i];
if(suma> sumamax)
{
sumamax = suma;
}
}
return sumamax;
}
int betterS()
{
int start =0;
int suma=0;
int startmax=0;
int stiop=0;
int sumamax = -9999999;
for (int i =0; i<a;i++)
{
if(suma<0)
{
suma =0;
start = i;
}
suma += chart[i];
if(suma> sumamax)
{
sumamax = suma;
startmax = start;
stiop = i;
}
}
Start = startmax;
Stop = stiop+1;
}
int main()
{
int min=0;
int max=0;
int profitmax =0;
int profitreal =0;
int pretmax;
int start =0;
string tmp;
in>>tmp;
int clienti = atoi(tmp.c_str());
in>>tmp;
int paguba = atoi(tmp.c_str());
int timpi[clienti];
int preturi[clienti];
//// aci citesc vectori
for (int i=0; i<clienti ;i++ )
{
in>>tmp;
timpi[i] = atoi(tmp.c_str());
in>>tmp;
preturi[i] = atoi(tmp.c_str());
}
//// aici generez charturi
for (int i=0; i<clienti ;i++ )
{
for (int j=0; j<clienti ;j++ )
{
for (int q=start; q<timpi[j] ;q++ )
{
if(preturi[i]> preturi[j])
{
//debug
//out<< preturi[i] << " "<<preturi [j]<< " "<< q<<endl;
////
chart[q] = -paguba;
}
else chart[q]=(preturi[i]/(timpi[j]-start))-paguba;
}
start = timpi[j];
}
start =0;
///debug
/// for (int i=0; i<1500 ;i++ )
/// out<<chart[i]<<" ";
/// out<<endl;
///debug
//profit = summax();
betterS();
for (int f=Start; f<=Stop ;f++ )
{
for(int j =0;j<clienti;j++)
if((timpi[j]== f)&&(preturi[j]>=preturi[i]))
{
/// out<< " f "<<f<<endl;
if(min == 0)min=f;
if (f>max) max =f;
if(f<min) min =f;
profit += preturi[i];
//break;
}
}
profit -= paguba*(max-min+1);
min =0;
max =0;
/// out<<preturi[i] << " "<<profit<< endl;
//profit -= paguba*(Stop -Start +1);
if(profit > profitmax)
{
profitmax = profit;
//debug
/// out<< " prezu max e"<<preturi[i] <<endl;
// profitreal = i;
////
// pretmax = preturi[i];
/// out << Start<< " "<< Stop<< endl;
}
profit =0;
}
out<<profitmax;
//out<< endl<<endl<<endl<< preturi[1]<< " "<<preturi[0];
return 0;
}