Pagini recente » Cod sursa (job #3127433) | Cod sursa (job #2468733) | Cod sursa (job #582091) | Cod sursa (job #2635444) | Cod sursa (job #1401991)
#include<fstream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
typedef int var;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
#define MAXN 500001
vector<pair<var, var> >V;
#define mp make_pair
var COLOR[MAXN];
var LAST[MAXN];
typedef pair<var, var> pii;
struct cmp {
const bool operator() (pii a, pii b) {
return a>b;
}
};
priority_queue<pii, vector<pii>, cmp> Q;
int main() {
var n, d, val;
fin>>n>>d;
for(var i=1; i<=n; i++) {
fin>>val;
V.push_back(mp(val, i));
LAST[i] = -2000000000;
}
sort(V.begin(), V.end());
Q.push(mp(-2000000000, 1));
var maxc = -1, cur_color;
var colors = 1;
for(auto v : V) {
var val = v.first;
var col;
auto top = Q.top();
if(val >= top.first + d) {
Q.pop();
Q.push(mp(val, top.second));
COLOR[v.second] = top.second;
} else {
Q.push(mp(val, ++colors));
COLOR[v.second] = colors;
}
}
fout<<colors<<'\n';
for(var i=1; i<=n; i++) {
fout<<COLOR[i]<<'\n';
}
return 0;
}