Cod sursa(job #1399052)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 24 martie 2015 15:45:52
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

const int MAXN = 300000 + 10;

struct node
{
    int val;
    int poz;
};

node V[MAXN];
int Where[MAXN];

struct comp
{
    inline bool operator () (const node &A, const node &B) const
    {
        return A.val < B.val;
    }
};

int main()
{
    int N, D, i, j;

    in >> N >> D;
    for (i = 1; i <= N; i ++){
        in >> V[i].val;
        V[i].poz = i;
    }

    sort (V + 1, V + N + 1, comp ());

    int Max = 0;
    j = 1;
    for (i = 1; i <= N; i ++){
        while (V[j].val <= V[i].val + (D - 1) && j <= N)
            j ++;

        if (j - i > Max)
            Max = j - i;
    }
    int k = 1;
    for (i = 1; i <= N; i ++){
        Where[V[i].poz] = k;
        k ++;

        if (k == Max + 1)
            k = 1;
    }

    out << Max << "\n";
    for (i = 1; i <= N; i ++)
        out << Where[i] << "\n";

    return 0;
}