Cod sursa(job #2450359)

Utilizator r00t_Roman Remus r00t_ Data 22 august 2019 20:58:59
Problema Lupul Urias si Rau Scor 28
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 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


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

bool cmp(const tuple<int,int,int> &a, const tuple<int,int,int> &b)
{
	int 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);
	int n, x, l;
	vector<tuple<int, int, int> >vp;
	fin >> n >> x >> l;
	for (int i = 0; i < n; i++)
	{
		int d, val;
		fin >> d >> val;
		vp.push_back(make_tuple(((x - d) / l + 1), val, d));
	}
	sort(vp.begin(), vp.end(), cmp);
	long long cnt = 0, total = 0;
	for (int i = 0; i < vp.size(); i++)
	{
		int val, d;
		tie(ignore, val, d) = vp[i];
		if (d + cnt > x) continue;
		else
		{
			total += val;
			cnt += l;
		}

	}
	fout << total;

}