Da li je moguce da u test primerima ima slucajeva kada se plantaze preklapaju,tj. da dele istu povrsinu(znaci ne da se nalaze jedna iznad druge ili sl)?Zvuci mi glupo da dve plantaze mogu da dele istu povrsinu,ali mi program prolazi samo za prvih 5 primera,za ostalih pet daje pogresan rezultat.Ja sam pretpostavio da je nemoguce da plantaze dele povrsinu,tako da sam zanemario y koordinatu za svaku plantazu ponaosob.
jagode
U pravu si, nemoguce je da dve plantaze dele istu povrsinu ...
Ok.Da li onda znaci da mi je u algoritmu koji deli plantaze na skup intervala koji se medjusobno ne seku po x osi?
(x je x pozicija plantaze,w-sirina, a h -visina)
l.clear();
l.push_back(make(p[n - 1]));
for (i = n - 2; i >=0 ; --i){
it = l.begin();
tmp = p[ i ].x + p[ i ].w;
if ( tmp < (*it)->x){ //da li je kraj i-tog pre pocetka prvog u listi
l.push_front(make(p[ i ]));
}
else{
if (p[ i ].x < (*it)->x)
l.push_front(make(p[ i ].x , (*it)->x - p[ i ].x - TOL, p[ i ].h));
while (it != l.end() && tmp >= (*it)->x + (*it)->w){
t = *it;
t->h += p[i].h;
it++;
}
if (it == l.end()){
if (t->x + t->w < tmp)
l.push_back(make(t->x + t->w + TOL, tmp - (t->x + t->w + TOL) ,
p[i].h));
}
else if (tmp > (*it)->x){
(*it)->h += p[i].h;
(*it)->w = tmp - (*it)->x;
l.insert(it,make( tmp + TOL , ((*it)->x + (*it)->w) - (tmp + TOL) ,
(*it)->h));
}
}
}
Ako ti je komplikovano da gledas moj kod,da li mozes da mi predlozis tvoje resenje?
(x je x pozicija plantaze,w-sirina, a h -visina)
l.clear();
l.push_back(make(p[n - 1]));
for (i = n - 2; i >=0 ; --i){
it = l.begin();
tmp = p[ i ].x + p[ i ].w;
if ( tmp < (*it)->x){ //da li je kraj i-tog pre pocetka prvog u listi
l.push_front(make(p[ i ]));
}
else{
if (p[ i ].x < (*it)->x)
l.push_front(make(p[ i ].x , (*it)->x - p[ i ].x - TOL, p[ i ].h));
while (it != l.end() && tmp >= (*it)->x + (*it)->w){
t = *it;
t->h += p[i].h;
it++;
}
if (it == l.end()){
if (t->x + t->w < tmp)
l.push_back(make(t->x + t->w + TOL, tmp - (t->x + t->w + TOL) ,
p[i].h));
}
else if (tmp > (*it)->x){
(*it)->h += p[i].h;
(*it)->w = tmp - (*it)->x;
l.insert(it,make( tmp + TOL , ((*it)->x + (*it)->w) - (tmp + TOL) ,
(*it)->h));
}
}
}
Ako ti je komplikovano da gledas moj kod,da li mozes da mi predlozis tvoje resenje?
Ajde ljudi neku ideju,ja stvarno nemam predstavu kako bih drugacije podelio plantaze na povsine koje se ne seku po x-osi....
Pa radi ovako..Povecavas povrsinu iznad svake kockice na x-osi ...Znaci
kad ucitas plantazu 3x3... ides od leve x do desne x koordinate i povecavas svaki
element niza za visinu, u ovom slucaju +3..posle samo trazis kockicu u kojoj se nala zi 1/3 i 2/3 ...
kad ucitas plantazu 3x3... ides od leve x do desne x koordinate i povecavas svaki
element niza za visinu, u ovom slucaju +3..posle samo trazis kockicu u kojoj se nala zi 1/3 i 2/3 ...
Ne razumem kako govoris o kockicama kada su koordinate i duzina stranice realni brojevi?Ajde mi pojasni to malo
ne, nisu realni brojevi vec celi..
tako samo pise u zadatku...Ja sam uradio zadatak i ne znam kako nisam obratio paznju na to.Prosao je, a racunao sam koordinate kao cele brojeve.
A u bre,ondk ce biti da je to veliki propust u postavci zadatka,jer se cela stvar mnogo pojednostavljuje ako su u pitanju celi brojevi...Trebao bi onda administartor da obrati paznju na tekst zadatka...U svakom slucaju,hvala ti