Cod sursa(job #1333840)

Utilizator raluca1234Tudor Raluca raluca1234 Data 3 februarie 2015 16:57:20
Problema Partitie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#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;
    }
    g<<MAX<<'\n';
    for (i=1; i<=N; i++)
        g<<r[i]<<'\n';



    f.close();
    g.close();
    return 0;
}