Pagini recente » Infoarena Monthly 2014, Clasament Runda 5 | Rating abcd efgh (balakraz94) | Istoria paginii stelele-2009/9-10/runda-2 | Cod sursa (job #158275) | Cod sursa (job #1235710)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
int N, D;
pair <int, int> v[300011];
int rez[300011];
queue <int> Q;
void Citire ()
{
ifstream fin ("partitie.in");
fin >> N >> D;
for (int i = 0; i < N; i++)
fin >> v[i].first, v[i].second = i;
fin.close ();
}
int Business ()
{
int cnt = 0;
for (int i = 0; i < N; i++)
{
if (!Q.empty () && v[i].first - v[Q.front ()].first >= D)
{
rez[v[i].second] = rez[v[Q.front ()].second];
Q.pop ();
}
else rez[v[i].second] = ++cnt;
Q.push (i);
}
return cnt;
}
void Scriere ()
{
ofstream fout ("partitie.out");
fout << Business ();
for (int i = 0; i < N; i++)
fout << "\n" << rez[i];
fout.close ();
}
int main ()
{
Citire ();
sort (v, v + N);
Scriere ();
return 0;
}