Cod sursa(job #2541360)

Utilizator Mada2003Madalina Scarlat Mada2003 Data 8 februarie 2020 12:54:52
Problema Partitie Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

long long int n, k, ans, j;
long long int ok[800005];

pair<int, int>v[800005];

int main()
{
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
    {
        cin >> v[i].first;
        v[i].second = i;
    }
    sort(v + 1, v + n + 1);
    for(int i = n; i > 0; i--)
    {
        if(ok[v[i].second] == 0)
        {
            ans++;
            ok[v[i].second] = ans;
            j=i - 1;
            while(j > 0)
            {
                if(ok[v[j].second] == 0)
                {
                    if(v[i].first - v[j].first >= k)
                    {
                        ok[v[j].second] = ans;
                        v[i].first = v[j].first;
                    }
                }
                j--;
            }
        }
    }
    cout << ans << "\n";
    for(int i = 1; i <= n; i++)
        cout << ok[i] << "\n";
    return 0;

}