Cod sursa(job #2969318)

Utilizator IvanAndreiIvan Andrei IvanAndrei Data 22 ianuarie 2023 21:01:27
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

#define pii pair <int, int>

const int max_size = 3e5 + 12;

int ans[max_size];
pii v[max_size];

int main ()
{
    int n, d, j = 1, ct = 0;
    in >> n >> d;
    for (int i = 1; i <= n; i++)
    {
        in >> v[i].first;
        v[i].second = i;
    }
    sort(v + 1, v + n + 1);
    for (int i = 1; i <= n; i++)
    {
        if (ans[v[i].second] == 0)
        {
            ct++;
            ans[v[i].second] = ct;
        }
        while (j <= n && (ans[v[j].second] != 0 || v[j].first - v[i].first < d))
        {
            j++;
        }
        if (j <= n)
        {
            ans[v[j].second] = ans[v[i].second];
        }
    }
    out << ct << '\n';
    for (int i = 1; i <= n; i++)
    {
        out << ans[i] << '\n';
    }
    in.close();
    out.close();
    return 0;
}