Cod sursa(job #1750374)

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

using namespace std;

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

    int n, d;

    cin>>n>>d;

    set < pair <int, int >> s;
    vector < pair < int, int >> v(n);

    for(int i=0;i<n;++i)cin>>v[i].first,v[i].second=i;
    sort(v.begin(), v.end());

    int sets = 0;
    vector<int>who(n);
    for(int i = n - 1; i >= 0; --i) {
		int x = v[i].first, poz = v[i].second;
		auto it = s.lower_bound({x + d,i});
		if(it == end(s))
			sets ++, who[poz] = sets;
		else {
		   who[poz] = who[it->second], s.erase(it);
		}

		s.insert(make_pair(x,poz));
    }

    cout<<sets<<'\n';
    for(auto i : who)
		cout<<i<<'\n';

}