Cod sursa(job #1750308)

Utilizator lflorin29Florin Laiu lflorin29 Data 29 august 2016 21:23:43
Problema Partitie Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
	ifstream cin("partitie.in");
	ofstream cout("partitie.out");

	int n, d;

	cin>>n>>d;

	map<int, int>ID;

	vector <int> v(n);
	vector<int> unde(n);

	set<int>s;

	for(int i=0;i<n;++i)
		cin>>v[i],s.insert(v[i]),ID[v[i]]=i;

	int sets = 0;

	while(!s.empty()){
		sets ++;
		auto last = *begin(s);
		s.erase(begin(s));
		unde[ID[last]] = sets;
		while(!s.empty()) {
			 auto it = s.lower_bound(last + d);
			 if(it == end(s)) break;
			 last = *it, unde[ID[*it]] = sets;
			 s.erase(it);
		}
	}

	cout<<sets<<'\n';
	for(int i=0;i<n;++i)
		cout<<unde[i]<<'\n';
}