Cod sursa(job #1401953)

Utilizator retrogradLucian Bicsi retrograd Data 26 martie 2015 11:19:21
Problema Partitie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
#include<algorithm>
#include<vector>

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];

int main() {

    var n, d, val;
    fin>>n>>d;

    for(var i=1; i<=n; i++) {
        fin>>val;
        V.push_back(mp(val, i));
    }
    sort(V.begin(), V.end());

    var last = -200000000, maxc = -1;
    for(var i=0; i<V.size(); i++) {
        if(V[i].first >= last + d) {
            COLOR[V[i].second] = 1;
            last = V[i].first;
        } else {
            COLOR[V[i].second] = COLOR[V[i-1].second] + 1;
        }
        maxc = max(maxc, COLOR[V[i].second]);
    }

    fout<<maxc<<'\n';
    for(var i=1; i<=n; i++) {
        fout<<COLOR[i]<<'\n';
    }

    return 0;
}