Pagini recente » Istoria paginii runda/oni_2009_baraj/clasament | Cod sursa (job #2672914)
#include <iostream>
#include <fstream>
#include <algorithm>
const int NMAX = 2e3;
class Client {
public:
int time;
int price;
Client() = default;
bool operator < (const Client& other) const {
return this->time < other.time;
}
friend std::istream& operator >> (std::istream& is, Client& inst) {
is >> inst.time >> inst.price;
return is;
}
};
int n, cost;
Client clients[1 + NMAX];
void read() {
std::ifstream in("carnati.in");
in >> n >> cost;
for (int i = 1; i <= n; ++i)
in >> clients[i];
std::sort(clients + 1, clients + n + 1);
in.close(); // Gata citirea
}
int main() {
read();
int last, last_client;
int ans = 0;
for (int i = 1; i <= n; ++i) {
last = last_client = 0;
for (int j = 1; j <= n; ++j) {
if (clients[i].price <= clients[j].price) {
last = std::max(last + clients[i].price - cost * (clients[j].time - clients[last_client].time), clients[i].price - cost);
last_client = j;
ans = std::max(ans, last);
}
}
}
std::ofstream out("carnati.out");
out << ans << '\n';
out.close();
return 0;
}