Pagini recente » Cod sursa (job #3246580) | Cod sursa (job #3244029) | Cod sursa (job #2050333) | Cod sursa (job #1221809) | Cod sursa (job #999916)
Cod sursa(job #999916)
#include<iostream>
#include<fstream>
#include<queue>
#include<algorithm>
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
struct numar
{
int info,poz;
} ;
typedef struct Compare
{
bool operator() (const numar a,const numar b)
{
return a.info < b.info;
}
} ICompare;
#define MaxN 300100
int N,L,Sol;
int SolV[MaxN];
numar A[MaxN];
void citire(void)
{
f >> N >> L;
for(int i=1;i<=N;A[i].poz = i,i++)
f >> A[i].info;
}
void Rezolvare(void)
{
queue<int> coada;
sort(A+1,A+N+1,ICompare());
for(int i=1;i<=N;i++)
{
coada.push(A[i].info);
for(;coada.front() <= A[i].info-L;coada.pop());
Sol = max(Sol,(int)coada.size());
}
for(int i=1;i<=N;i++)
SolV[A[i].poz] = i%Sol ? i%Sol : Sol;
}
int main()
{
citire();
Rezolvare();
g << Sol << "\n";
for(int i=1;i<=N;i++)
g << SolV[i] << "\n";
}