Cod sursa(job #1496930)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 5 octombrie 2015 20:06:52
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <algorithm>
#include <utility>

using namespace std;

const int NMAX = 300005;
pair <int, int> v[NMAX];

int afis[NMAX];

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

    int n = 0, d;
    cin >> n >> d;

    for (int i = 1; i <= n; ++ i) {
        cin >> v[i].first;
        v[i].second = i;
    }

    sort(v + 1, v + n + 1);

    int ans = 0, dr = 1;
    for (int i = 1; i <= n; ++ i)
        if (i == 1 || v[i].first - v[dr].first < d)
            afis[v[i].second] = ++ ans;
        else
            afis[v[i].second] = afis[v[dr ++].second];

    cout << ans << '\n';
    for (int i = 1; i <= n; ++ i)
        cout << afis[i] << '\n';

    cin.close();
    cout.close();
    return 0;
}