Cod sursa(job #2982673)

Utilizator adelina_15InfoAdelina Radoi adelina_15Info Data 20 februarie 2023 18:29:05
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

struct Num{
     int val, ind;
};

vector<Num>a;
int rasp[300005];
int nrg = 0;
int n, d;

bool cmp(Num x, Num y)
{
    return x.val < y.val;
}

int main()
{
    int x;
    fin >> n >> d;
    a.push_back({0, 0});
    for(int i = 1; i <= n; i++)
    {
        fin >> x;
        a.push_back({x, i});
    }
    sort(a.begin(), a.end(), cmp);

    int i = 1, j = 2;
    while(i <= n)
    {
        if(rasp[a[i].ind] == 0)
        {
            rasp[a[i].ind] = nrg+1;
            nrg++;
        }
        while(j < n && (a[j].val < a[i].val+d || rasp[a[j].ind] > 0))
            j++;
        if(rasp[a[j].ind] == 0)
            rasp[a[j].ind] = rasp[a[i].ind];
        i++;
    }
    fout << nrg << "\n";
    for(int i = 1; i <= n; i++)
        fout << rasp[i] << "\n";
    return 0;
}