Pagini recente » Cod sursa (job #505303) | Cod sursa (job #2596886) | Cod sursa (job #3140382) | Cod sursa (job #3183291) | Cod sursa (job #1333837)
#include<iostream>
#include<fstream>
using namespace std;
int N,i,schimbat,j,k;
long D,aux,MAX,nr;
struct multime{long v; int poz;}M[300005];
long r[300005];
int main()
{
ifstream f("partitie.in");
ofstream g("partitie.out");
f>>N;
f>>D;
for (i=1; i<=N; i++) {
f>>M[i].v;
M[i].poz=i; //retin pozitia deoarece voi ordona vectorul
}
//Ordonez vectorul M crescator
do {
schimbat = 0;
for (i=0; i<=N-1; i++) //parcurgem vectorul
if (M[i].v> M[i+1].v)
{ //interschimbare
aux=M[i].v; M[i].v=M[i+1].v; M[i+1].v=aux;
aux=M[i].poz; M[i].poz=M[i+1].poz; M[i+1].poz=aux;
schimbat = 1;
}
}while (schimbat);
MAX=0;
j=2;
for (i=1; i<=N; i++) {
j=i+1;
while (M[j].v-M[i].v<=D-1) {
nr=M[j].v-M[i].v;
j++;
}
if (nr+1>MAX) MAX=nr+1;
}
k=0;
for (i=1; i<=N; i++) {
k++;
if (k==MAX+1) k=1;
r[M[i].poz]=k;
}
for (i=1; i<=N; i++)
g<<r[i]<<'\n';
f.close();
g.close();
return 0;
}