Cod sursa(job #3260033)

Utilizator 0021592Grecu rares 0021592 Data 29 noiembrie 2024 12:17:01
Problema Partitie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;
ifstream in("partitie.in");
ofstream out("partitie.out");
int n, i, d, j, big = 1;
pair<int, int> v[300010];
deque<pair<int, int>> pa;
int retard(pair<int, int> a, pair<int, int> b)
{
    return a.second < b.second;
}
int main()
{
    in >> n >> d;
    for (i = 1; i <= n; i++)
    {
        in >> v[i].first; v[i].second = i;
    }
    sort(v+1, v+1+n);
    pa.push_back(make_pair(v[1].first, 1));
    v[1].first = 1;
    for (i = 2; i <= n; i++)
    {
        if (pa.front().first + d <= v[i].first)
        {
            int grecu = pa.front().first;
            j = pa.front().second;
            pa.pop_front();
            pa.push_back(make_pair(v[i].first, j));
            v[i].first = j;
            continue;
        }
        pa.push_back(make_pair(v[i].first, ++big));
        v[i].first = big;
    }
    sort(v+1, v+1+n, retard);
    out << big << '\n';
    for (i = 1; i <= n; i++)
        out << v[i].first << '\n';
    return 0;
}