Cod sursa(job #2345855)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 16 februarie 2019 19:16:25
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define Nmax 2005

using namespace std;

ifstream f("carnati.in");
ofstream g("carnati.out");

int n, c, t, p;
pair <int, int> v[Nmax];
int profit, price, pmax;

void read()
{
    f >> n >> c;
    for (int i = 1; i <= n; i++)
    {
        f >> t >> p;
        v[i]={t, p};
    }
    //for (int i = 1; i <= n; i++)
      //  cout << v[i].first << " " << v[i].second << '\n';
}

void solve()
{
    sort(v+1, v+n+1);
	for (int i = 1; i <=n; i++)
	{
		price=v[i].second;
		int j = 1;
		for (; v[j].second < price; j++);

		profit=price-c;

		pmax=max(pmax,profit);

		int k=j;
		j++;
		for (; j <= n; j++)
			if(v[j].second >= price)
				pmax=max(pmax,profit=max(profit + price - c*(v[j].first-v[k].first), price-c)), k=j;
	}
	g << pmax;
}

int main()
{
    read();
    solve();

    return 0;
}