Cod sursa(job #2501176)

Utilizator mircearoataMircea Roata Palade mircearoata Data 29 noiembrie 2019 10:25:35
Problema Partitie Scor 90
Compilator cpp-64 Status done
Runda simu Marime 0.78 kb
#include <iostream>
#include <algorithm>
#include <fstream>

using namespace std;

ifstream in("partitie.in");
ofstream out("partitie.out");

int n, d, ans;
struct elem {
	int val, i, multime;
};
elem v[300005];

int main()
{
	in >> n >> d;
	for (int i = 1; i <= n; i++)
	{
		in >> v[i].val;
		v[i].i = i;
		v[i].multime = -1;
	}
	sort(v + 1, v + n + 1, [](const elem& l, const elem& r) { return l.val < r.val; });
	int nextElem = 1;
	for (int i = 1; i <= n; i++)
	{
		while (nextElem <= n && v[nextElem].val < v[i].val + d)
			v[nextElem++].multime = ++ans;
		v[nextElem++].multime = v[i].multime;
	}
	sort(v + 1, v + n + 1, [](const elem& l, const elem& r) { return l.i < r.i; });
	out << ans << '\n';
	for (int i = 1; i <= n; i++)
		out << v[i].multime << '\n';
}