Cod sursa(job #2515986)

Utilizator betybety bety bety Data 29 decembrie 2019 22:18:13
Problema Partitie Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <algorithm>
#include <queue>
#include <unordered_map>
using namespace std;
ifstream in("partitie.in");
ofstream out("partitie.out");
const int lim=3e5+3;
unordered_map<int,int> m;
queue<int> q;
int v[lim];
int sol[lim];
int main()
{
    int n,d;
    in>>n>>d;
    for(int i=1;i<=n;++i)
    {
        in>>v[i];
        m[v[i]]=i;
    }
    sort(v+1,v+n+1);
    int grupa=1;
    q.push(v[1]);
    sol[m[v[1]]]=grupa;
    for(int i=2;i<=n;++i)
    {
        if(v[i]<q.front()+d)
        {
            q.push(v[i]);
            ++grupa;
            sol[m[v[i]]]=grupa;
        }
        else
        {
            sol[m[v[i]]]=sol[m[q.front()]];
            q.pop();
            q.push(v[i]);
        }
    }
    out<<grupa<<endl;
    for(int i=1;i<=n;++i)
        out<<sol[i]<<endl;
    return 0;
}