Pagini recente » Cod sursa (job #596010) | Cod sursa (job #2311302) | Cod sursa (job #2277032) | Cod sursa (job #1752570) | Cod sursa (job #2982672)
#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[305];
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;
}