već se duže vrijeme mučim sa ovim zadatkom.
molio bi pomoć.
evo koda:
#include <cstdio>
#include <iostream>
#define m 10000;
using namespace std;
int main() {
short a[10000],b[10000],n,kon=-1;
short ma=-1;
short min=m;
scanf("%d",&n);
for (short i=0; i<=n; ++i) { scanf("%d%d",&a[i],&b[i]);
if (b[i]>ma) ma=b[i];
if (a[i]<min) min=a[i];
}
for (short i=min; i<=ma; ++i){
int p=0;
for (short x=0; x<n; ++x) {
if (i>=a[x] && i<=b[x]) {++p;}
if (p>kon) {kon=p;}
if (kon==n) {break;}
}
}
printf("%d",kon);
system ("pause");
}
javlja tle na 5 testova
z-policajac
Ne radim u c-u, ali ga 'prepoznajem'. Zbog dvostruke 'for' petlje, za očekivati je t.l.e.
Bolje probaj sa sledećom idejom. Sva vremena (i ulaska i izlaska) smesti u jedan niz ('a'), a u drugi niz 'b' smesti +1 ili -1,
tj. ako je i-ti postilac došao u vreme x i otišao u vreme y, onda je a[2*i-1] = x i a[2*i] = y, a b[2*i-1] = +1 i b[2*i] = -1.
Zatim sortiraj niz 'a', ali istovremno i niz 'b'. Posle samo sabiraš b[i] i 'hvataš' maksimum.
Ako nisam bio dovoljno jasan, mogu ti poslati kod (pascal).
Pozdrav.
Bolje probaj sa sledećom idejom. Sva vremena (i ulaska i izlaska) smesti u jedan niz ('a'), a u drugi niz 'b' smesti +1 ili -1,
tj. ako je i-ti postilac došao u vreme x i otišao u vreme y, onda je a[2*i-1] = x i a[2*i] = y, a b[2*i-1] = +1 i b[2*i] = -1.
Zatim sortiraj niz 'a', ali istovremno i niz 'b'. Posle samo sabiraš b[i] i 'hvataš' maksimum.
Ako nisam bio dovoljno jasan, mogu ti poslati kod (pascal).
Pozdrav.
ok hvala napravit ću to
halil...kako to mislis sabiras b[i]. ako sabiras b[i] dobivas 0 ?
ne kuzem dobro ..moze da objasnis pak poubavo :?
ne kuzem dobro ..moze da objasnis pak poubavo :?
b[] = +1 (kad neko udje) ili -1 (kad izadje). Na kraju
ce suma b[] biti nula, ali tražim kada je ta suma bila maksimalna.
ce suma b[] biti nula, ali tražim kada je ta suma bila maksimalna.