Mai intai trebuie sa te autentifici.
Cod sursa(job #2515711)
| Utilizator | Data | 29 decembrie 2019 13:37:50 | |
|---|---|---|---|
| Problema | Partitie | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.81 kb |
#include <fstream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream in("partitie.in");
ofstream out("partitie.out");
unordered_map<int,int> m;
vector<int> v;
const int lim=1e5+3;
int sol[lim];
int main()
{
int n,d,a;
in>>n>>d;
for(int i=1;i<=n;++i)
{
in>>a;
v.push_back(a);
m[a]=i;
}
sort(v.begin(),v.end());
int grupa=0;
while(v.size())
{
++grupa;
int ind=0;
while(ind<v.size())
{
sol[m[v[ind]]]=grupa;
int last=v[ind];
v.erase(v.begin()+ind);
ind=lower_bound(v.begin()+ind,v.end(),last+d)-v.begin();
}
}
out<<grupa<<endl;
for(int i=1;i<=n;++i)
out<<sol[i]<<endl;
return 0;
}
