Cod sursa(job #2450356)

Utilizator r00t_Roman Remus r00t_ Data 22 august 2019 20:53:35
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <cmath>
#include <iomanip>
#include <queue>
#include <tuple>
#include <limits>
#include <stdio.h>
#include <string.h>

using namespace std;

#define ff first
#define ss second
#define ull long long

ifstream fin("lupu.in");
ofstream fout("lupu.out");

bool cmp(const tuple<ull,ull,ull> &a, const tuple<ull,ull,ull> &b)
{
	ull ai, aval, bi, bval;
	tie(ai, aval, ignore) = a;
	tie(bi, bval, ignore) = b;
	if (ai == bi) return aval > bval;
	return ai < bi;
}


int main()
{
	ios_base::sync_with_stdio(false);
	ull n, x, l;
	vector<tuple<ull, ull, ull> >vp;
	cin >> n >> x >> l;
	for (ull i = 0; i < n; i++)
	{
		ull d, val;
		cin >> d >> val;
		vp.push_back(make_tuple(((x - d) / l + 1), val, d));
	}
	sort(vp.begin(), vp.end(), cmp);
	ull cnt = 0, total = 0;
	for (ull i = 0; i < vp.size(); i++)
	{
		ull val, d;
		tie(ignore, val, d) = vp[i];
		if (d + cnt > x) continue;
		else
		{
			total += val;
			cnt += l;
		}

	}
	cout << total;

}