Cod sursa(job #3194598)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 18 ianuarie 2024 18:56:37
Problema Partitie Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <set>
using namespace std;
ifstream fin ("partitie.in");
ofstream fout ("partitie.out");
int n,k,i,x,fr[300001],nr;
pair <int,int> p;
set <pair<int,int>> s;
set <pair<int,int>>::iterator it;
int main()
{
    fin>>n>>k;
    for (i=1; i<=n; i++)
    {
        fin>>x;
        s.insert (make_pair (x,i));
    }
    nr=0;
    while (!s.empty ())
    {
        p=*s.begin ();
        fr[p.second]=++nr;
        p=make_pair (p.first+k,0);
        s.erase (s.begin ());
        while ((it=s.lower_bound (p))!=s.end ())
        {
            p=*it;
            fr[p.second]=nr;
            p=make_pair (p.first+k,0);
            s.erase (it);
        }
    }
    fout<<nr<<"\n";
    for (i=1; i<=n; i++)
        fout<<fr[i]<<"\n";
    return 0;
}