Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 1992

[es] :: Art of Programming :: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 1992

Strane: 1 2 3 4

[ Pregleda: 5942 | Odgovora: 66 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 00:23 - pre 4 meseca
U stvari, može i prostije, obzirom da smo našli ograničenje broja koraka do susreta ako je moguć. Napominjem da donji kod nije testiran.

Code (c):

#include <stdio.h>
#include <stdbool.h>

#define MAX_GRADOVA 40
#define MAX_OSOBA (MAX_GRADOVA-1)
#define MAX_KORAKA (MAX_GRADOVA >= 3 ? 2*MAX_GRADOVA-4 : MAX_GRADOVA-1)

struct graf
{
    int br_gradova;
    bool povezani[MAX_GRADOVA][MAX_GRADOVA];
};

struct osobe
{
    int br_osoba;
    int mesto[MAX_OSOBA];
};

int unesi_broj(const char *text)
{
    int broj;

    if (text!=NULL) {
        printf("%s", text);
    }

    fflush(stdout);
    scanf("%d", &broj);

    return broj;
}

void unesi_graf(struct graf *graf)
{
    graf->br_gradova = 0;

    for (int i = 0; i < MAX_GRADOVA; ++i) {
        for (int j = 0; j < MAX_GRADOVA; ++j) {
            graf->povezani[i][j] = false;
        }
    }

    graf->br_gradova = unesi_broj("Unesi broj gradova : ");

    int broj_puteva = unesi_broj("Unesi broj puteva : ");

    printf("Unesi puteve:\n");

    for (int p = 0; p < broj_puteva; ++p) {
        int i = unesi_broj(NULL) - 1;
        int j = unesi_broj(NULL) - 1;

        graf->povezani[i][j] = graf->povezani[j][i] = true;
    }
}

void unesi_osobe(struct osobe *osobe)
{
    osobe->br_osoba = unesi_broj("Unesi broj osoba : ");

    for (int i = 0; i < osobe->br_osoba; ++i) {
        printf("Unesi grad u kome se nalazi osoba %d : ", i+1);
        osobe->mesto[i] = unesi_broj(NULL) - 1;
    }
}

int main()
{
    struct graf graf;
    struct osobe osobe;

    unesi_graf(&graf);
    unesi_osobe(&osobe);

    int max_koraka = graf.br_gradova >= 3 ? 2*graf.br_gradova-4 : graf.br_gradova-1;
    bool dostizno[MAX_OSOBA][MAX_GRADOVA][MAX_KORAKA+1] = { false };
    int grad_susreta = -1;
    int korak;

    for (int osoba = 0; osoba < MAX_OSOBA; ++osoba) {
        dostizno[osoba][osobe.mesto[osoba]][0] = true;
    }

    for (korak = 1; korak<=max_koraka; ++korak) {
        for (int osoba = 0; osoba < osobe.br_osoba; ++osoba) {
            for (int iz_grada = 0; iz_grada < graf.br_gradova; ++iz_grada) {
                if (dostizno[osoba][iz_grada][korak-1]) {
                    for (int u_grad = 0; u_grad < graf.br_gradova; ++u_grad) {
                        if (graf.povezani[iz_grada][u_grad]) {
                            dostizno[osoba][u_grad][korak] = true;
                        }
                    }
                }
            }
        }

        for (int grad = 0; grad < graf.br_gradova; ++grad) {
            bool nadjen = false;

            for (int osoba = 0; osoba < osobe.br_osoba; ++osoba) {
                if (dostizno[osoba][grad][korak]==false) {
                    nadjen = true;

                    break;
                }
            }

            if (nadjen == false) {
                grad_susreta = grad;

                break;
            }
        }

        if (grad_susreta != -1) {
            break;
        }
    }

    if (grad_susreta == -1) {
        printf("Ne mogu se sresti u istom gradu.\n");

        return 0;
    }

    printf("Mogu se svi sresti u gradu %d. Evo putanja za svakoga:\n", grad_susreta+1);

    for (int osoba = 0; osoba < osobe.br_osoba; ++osoba) {
        printf("Osoba %d :", osoba+1);

        int putanja[MAX_GRADOVA];

        putanja[0] = osobe.mesto[osoba];
        putanja[korak] = grad_susreta;

        int mesto = grad_susreta;

        for (int i = korak-1; i >= 1; --i) {
            for (int grad = 0; grad < graf.br_gradova; ++grad) {
                if (dostizno[osoba][grad][i] && graf.povezani[grad][mesto]) {
                    putanja[i] = grad;
                    mesto = grad;

                    break;
                }
            }
        }

        for (int i = 0; i <= korak; ++i) {
            printf(" %d", putanja[i]);
        }

        printf(".\n");
    }

    return 0;
}

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kosmopolita
Beograd

Član broj: 257864
Poruke: 160



+27 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 06:38 - pre 4 meseca
Prvo bi napisao da me baš zanimalo kako bi to izgledalo i hvala na konkretnom kodu.

Primetio bi, iz ugla nekog koga je zanimao da vidi kod, da nedostaje minimalna putanja koja bi se dobila sortiranje više rešenja, ako ima više.
 
Odgovor na temu

feveh

Član broj: 350462
Poruke: 4



+1 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 15:12 - pre 4 meseca
Minimalna putanja ne mora da rezultuje u istovremenom susretu u zadatom gradu.
Evo primer matrice susedstva (generisana random)
Code:
0    0    0    1    1    0    0    1    0    1    0    0    0    1    0    0    0    0    1    1
0    0    0    1    0    0    0    0    0    1    0    0    0    0    1    0    0    0    0    0
0    0    0    1    1    1    0    1    1    1    1    1    0    0    0    0    0    1    1    0
0    0    0    0    0    0    0    1    1    0    0    0    0    0    1    0    0    1    0    1
0    1    0    1    0    0    0    0    0    0    1    0    1    0    0    0    1    0    1    1
0    1    0    1    0    0    1    0    0    0    0    1    0    0    0    0    0    1    0    0
0    0    0    1    0    1    0    1    0    1    1    0    1    0    0    0    1    0    1    1
0    0    0    0    1    0    0    0    1    0    1    0    1    1    0    1    0    0    0    0
0    0    0    0    0    0    0    0    0    1    0    0    1    1    0    0    0    1    1    1
0    1    1    0    1    0    0    1    1    0    1    1    1    0    1    0    0    0    1    1
0    1    0    0    0    1    1    0    1    1    0    1    1    1    1    0    1    0    0    0
0    1    1    1    1    1    0    1    1    1    0    0    0    1    1    0    0    0    0    0
1    1    0    0    1    1    1    1    1    0    0    0    0    1    0    0    0    0    0    1
1    0    1    1    1    0    0    0    0    0    1    0    0    0    0    1    0    0    0    0
1    1    1    0    0    0    0    0    1    0    0    0    0    1    0    0    1    1    0    0
0    0    0    0    1    1    0    0    1    1    0    0    0    1    0    0    1    0    0    0
0    1    1    1    0    0    0    0    0    1    0    1    0    0    1    0    0    1    0    0
1    1    1    0    0    0    0    0    0    0    0    1    0    1    1    1    0    0    0    0
0    1    1    0    1    0    1    1    0    0    1    0    0    0    1    1    1    1    0    1
0    0    0    0    0    0    0    0    0    0    1    1    0    0    0    0    0    1    0    0

Za pet osoba zadati grad je grad broj 3.
Osoba broj 1 polazi iz grada broj 13, osoba broj 2 polazi iz grada 20, itd.
Code:
1:13    5    1    13    7    6    3    10    1    14    1    15    2    5    3
2:20    1    13    5    1    14    1    15    2    5    3    10    1    18    3
3:9    3    10    1    13    5    1    14    1    15    2    5    3    12    3
4:18    3    10    1    13    5    1    14    1    15    2    5    3    12    3
5:10    1    13    5    1    14    1    15    2    5    3    10    2    6    3

U prvom koraku osoba broj 1 prelazi u grad 5, osoba 2 u grad 1, itd.
Posle 14 koraka (proverom svih putanja) sve osobe su u zadatom gradu 3.
Resenje je pronadjeno ali da li je putanja minimalna?
Ako se iz putanja izbace ciklusi dobiju se minimalne putanje svake osobe ali dolazak u grad 3 nije istovremen :)

 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 15:39 - pre 4 meseca
I na kraju ne valja formula za max_korak. Evo ispravke:

Code (c):

#include <stdio.h>
#include <stdbool.h>

#define MAX_GRADOVA 40
#define MAX_OSOBA (MAX_GRADOVA-1)
#define MAX_KORAKA (MAX_GRADOVA >= 2 ? 2*MAX_GRADOVA-3 : MAX_GRADOVA-1)

struct graf
{
    int br_gradova;
    bool povezani[MAX_GRADOVA][MAX_GRADOVA];
};

struct osobe
{
    int br_osoba;
    int mesto[MAX_OSOBA];
};

int unesi_broj(const char *text)
{
    int broj;

    if (text!=NULL) {
        printf("%s", text);
    }

    fflush(stdout);
    scanf("%d", &broj);

    return broj;
}

void unesi_graf(struct graf *graf)
{
    graf->br_gradova = 0;

    for (int i = 0; i < MAX_GRADOVA; ++i) {
        for (int j = 0; j < MAX_GRADOVA; ++j) {
            graf->povezani[i][j] = false;
        }
    }

    graf->br_gradova = unesi_broj("Unesi broj gradova : ");

    int broj_puteva = unesi_broj("Unesi broj puteva : ");

    printf("Unesi puteve:\n");

    for (int p = 0; p < broj_puteva; ++p) {
        int i = unesi_broj(NULL) - 1;
        int j = unesi_broj(NULL) - 1;

        graf->povezani[i][j] = graf->povezani[j][i] = true;
    }
}

void unesi_osobe(struct osobe *osobe)
{
    osobe->br_osoba = unesi_broj("Unesi broj osoba : ");

    for (int i = 0; i < osobe->br_osoba; ++i) {
        printf("Unesi grad u kome se nalazi osoba %d : ", i+1);
        osobe->mesto[i] = unesi_broj(NULL) - 1;
    }
}

int main()
{
    struct graf graf;
    struct osobe osobe;

    unesi_graf(&graf);
    unesi_osobe(&osobe);

    int max_koraka = graf.br_gradova >= 2 ? 2*graf.br_gradova-3 : graf.br_gradova-1;
    bool dostizno[MAX_OSOBA][MAX_GRADOVA][MAX_KORAKA+1] = { false };
    int grad_susreta = -1;
    int korak;

    for (int osoba = 0; osoba < MAX_OSOBA; ++osoba) {
        dostizno[osoba][osobe.mesto[osoba]][0] = true;
    }

    for (korak = 1; korak<=max_koraka; ++korak) {
        for (int osoba = 0; osoba < osobe.br_osoba; ++osoba) {
            for (int iz_grada = 0; iz_grada < graf.br_gradova; ++iz_grada) {
                if (dostizno[osoba][iz_grada][korak-1]) {
                    for (int u_grad = 0; u_grad < graf.br_gradova; ++u_grad) {
                        if (graf.povezani[iz_grada][u_grad]) {
                            dostizno[osoba][u_grad][korak] = true;
                        }
                    }
                }
            }
        }

        for (int grad = 0; grad < graf.br_gradova; ++grad) {
            bool nadjen = false;

            for (int osoba = 0; osoba < osobe.br_osoba; ++osoba) {
                if (dostizno[osoba][grad][korak]==false) {
                    nadjen = true;

                    break;
                }
            }

            if (nadjen == false) {
                grad_susreta = grad;

                break;
            }
        }

        if (grad_susreta != -1) {
            break;
        }
    }

    if (grad_susreta == -1) {
        printf("Ne mogu se sresti u istom gradu.\n");

        return 0;
    }

    printf("Mogu se svi sresti u gradu %d. Evo putanja za svakoga:\n", grad_susreta+1);

    for (int osoba = 0; osoba < osobe.br_osoba; ++osoba) {
        printf("Osoba %d :", osoba+1);

        int putanja[MAX_GRADOVA];

        putanja[0] = osobe.mesto[osoba];
        putanja[korak] = grad_susreta;

        int mesto = grad_susreta;

        for (int i = korak-1; i >= 1; --i) {
            for (int grad = 0; grad < graf.br_gradova; ++grad) {
                if (dostizno[osoba][grad][i] && graf.povezani[grad][mesto]) {
                    putanja[i] = grad;
                    mesto = grad;

                    break;
                }
            }
        }

        for (int i = 0; i <= korak; ++i) {
            printf(" %d", putanja[i]);
        }

        printf(".\n");
    }

    return 0;
}

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 15:40 - pre 4 meseca
Minimalnost se traži u smislu najmanjeg broja koraka potrebnog da se svi nađu u istom gradu.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kosmopolita
Beograd

Član broj: 257864
Poruke: 160



+27 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 15:43 - pre 4 meseca
Da, pošto se istovrmeno kreću, kad se prvi put sretnu to je minimum.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1263



+96 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 16:07 - pre 4 meseca
Meni moje rešenje i dalje deluje prostije, ali mrzi me da ga kodiram. Za svaku osobu imamo niz dužine N (broj gradova). Ćelije u nizu mogu da imaju samo vrednost 0 ili 1. 1 znači da osoba može da stigne do tog grada u trenutnom broju koraka. Osoba je inicijalno u svom početnom gradu. U svakom koraku pravimo novi niz u kome se svaka jedinica iz prethodnog niza kopira u sve gradove koji su susedni sa datim gradom. Čitava stvar izgleda pomalo kao igra Life u jednoj dimenziji. Kada završimo translaciju za sve osobe gledamo da li postoji grad za koji sve osobe imaju jedinicu. To je to. Došli smo do minimalnog broja koraka.

Jedini problem je "kako znati kada stati", to jest posle koliko koraka smo sigurni da rešenje ne postoji. Deluje mi da je 2*N dobra vrednost za maksimalni broj koraka, ali ne znam kako to da dokažem. Drugi način bi bio da pamtimo matricu osoba za dva prethodna koraka, pa ako se matrice za korak X i korak X-2 poklapaju to znači da nema razloga da gledamo dalje. Ali ne mogu da dokažem ni da je i to dovoljan uslov.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3570

Jabber: djoka_l


+1527 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 16:38 - pre 4 meseca
Citat:
Kada završimo translaciju za sve osobe gledamo da li postoji grad za koji sve osobe imaju jedinicu. To je to. Došli smo do minimalnog broja koraka.

Ako nemamo grad u koji mogu da odu sve osobe?
Onda nemaš "rollback", Nemaš pojma gde treba da odu osobe - ti si uradio "prostu deobu" jer si istu osobu poslao u više gradova.

primer - imaš 2 osobe u 40 gradova, međusobno udaljene, recimo, 6 puteva.
Kada ih pošalješ u susedni grad, dobiješ još dva grada (ili više) sa po jednom osobom.
U sledećem potezu vratiš obe osobe u početni grad, pa imaš u oba početna grada po 2 osobe. Samo si ih zaklackao
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3570

Jabber: djoka_l


+1527 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 16:53 - pre 4 meseca
U ovom zadatku postoji nekoliko pretpostavki i nekoliko potpitanja.

Prvo, kaže se da je data mreža POVEZANIH gradova. To bi trebalo da znači da je graf povezan, pa nakon učitavanja veza, verovatno treba proveriti da li je to tačno, pa odmah prekinuti program ako graf nije povezan.
Drugo, data je, potpuno nepotrebno, činjenica da u početnom trenutku ne postoje dve osobe u istom gradu. Ovo takođe treba proveriti, a nije mi jasno zašto to treba da bude ispunjeno.
Treće, traži se da se ODMAH utvrdi da li je moguće da se sve osobe nađu u istom gradu, a to je verovatno teško bez prolaska kroz graf.
Četvrto, traži se da se da najmanji broj poteza, što je isto veoma teško - optimizacioni problem. Ako ne postoji neka caka iz teorije grafova, onda treba ispitati sve moguće puteve, tako što se čuva trenutna pozicija, prvi put dokojeg se stglo do rešenja, a svi ostali mogući putevi treba da se ispitaju dokle god su kraći od trenutnog minimuma. Ovo vidim kao neki rekurzivni algoritam koji preti da pojede sve resurse.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1263



+96 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 17:03 - pre 4 meseca
Nije mi baš jasno šta zameraš mom rešenju. Algoritam će uvek pronaći rešenje (najmanji broj koraka), ako rešenje postoji, i treba samo utvrditi posle koliko koraka smo sigurni da rešenje ne postoji, ako ne postoji. I cenim da je 2*N taj maksimalni broj koraka. Možda je čak i N, ko zna.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 17:55 - pre 4 meseca
@Mihajlo Cvetanovic

Vidi moj kod. Tako i radi, samo što je maksimalan broj koraka pogrešno procenjen. Treba da bude 2n-1.

@djoka_l

U svakom koraku se gleda da li postoji grad u koji svi mogu da dođu u tom koraku. Ako se ne mogu sresti, posle 2n+1 iteracija se staje sa rezultatom da se ne mogu sresti.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 18:42 - pre 4 meseca
@Mihajlo Cvetanovic

Obrazložio sam limit. Ako neko treba da koriguje parnost dužine puta za to mu treba ciklus neprane dužine m, onda mu je za to dovoljno n-m + m + n-1 = 2n-1 koraka. U suprotnom mu je dovoljno n-1 koraka. U svakom slučaju mu ne treba više od 2n-1 koraka. Evo ispravljenog i potpuno netestiranog koda.

Code:

use std::io::{self, Write};
fn procitaj_broj(v: &mut Vec::<usize>, pos : &mut usize) -> usize
{
    let mut input = String::new();
    io::stdout().flush().unwrap();

    if *pos >= v.len() {
        io::stdin()
            .read_line(&mut input)
            .expect("Neuspešno čitanje linije");

        *v = input
            .trim()
            .split_whitespace()
            .filter_map(|s| s.parse::<usize>().ok())
            .collect();
        *pos = 0;
    }

    *pos += 1;

    return v[*pos-1];
}

fn main() {
    let mut v = Vec::<usize>::new();
    let mut pos : usize = 0;

    print!("Unesi broj gradova : ");

    let br_gradova = procitaj_broj(&mut v, &mut pos);
    let mut povezani = vec![vec![false; br_gradova]; br_gradova];

    println!("Unesi broj puteva");

    let br_puteva = procitaj_broj(&mut v, &mut pos);

    println!("Unesi puteve :");

    for _ in 0..br_puteva {
        let g1 = procitaj_broj(&mut v, &mut pos)-1;
        let g2 = procitaj_broj(&mut v, &mut pos)-1;

        povezani[g1][g2] = true;
    }

    print!("Unesi broj osoba :");

    let br_osoba = procitaj_broj(&mut v, &mut pos);
    let mut pocetni_gradovi = vec![0 as usize; br_osoba];

    print!("Unesi gradove u kojima se osobe nalaze :");

    for osoba in 0..br_osoba {
        let grad = procitaj_broj(&mut v, &mut pos)-1;

        pocetni_gradovi[osoba] = grad;
    }

    let max_koraka = 2*br_gradova-1;
    let mut dostizno = vec![vec![vec![false; max_koraka]; br_gradova]; br_osoba];

    for osoba in 0..br_osoba {
        dostizno[osoba][pocetni_gradovi[osoba]][0] = true;
    }

    for korak in 1..=max_koraka {
        for osoba in 0..br_osoba {
            for grad in 0..br_gradova {
                for g in 0..br_gradova {
                    if dostizno[osoba][g][korak-1] && povezani[g][grad] {
                        dostizno[osoba][grad][korak] = true;

                        break;
                    }
                }
            }
        }

        let mut grad_sastanka = 0;
        let mut nadjen = false;

        for grad in 0..br_gradova {
            nadjen = true;

            for osoba in 0..br_osoba {
                if dostizno[osoba][grad][korak]==false {
                    nadjen = false;

                    break;
                }
            }

            if nadjen {
                grad_sastanka = grad;

                break;
            }
        }

        if nadjen {
            println!("Svi se mogu sresti posle {} koraka u gradu {}. Putanje slede :", korak, grad_sastanka);

            for osoba in 0..br_osoba {
                print!("Osoba {} :", osoba+1);

                let mut put = vec![0 as usize; korak+1];

                put[0] = pocetni_gradovi[osoba];
                put[korak] = grad_sastanka;

                for k in (1..korak).rev() {
                    for grad in 0..br_gradova {
                        if povezani[grad][put[k+1]] {
                            put[k] = grad;

                            break;
                        }
                    }
                }

                for k in 1..=korak {
                    print!(" {}", put[k]);
                }

                println!("");
            }

            return;
        }
    }

    println!("Ne mogu se svi sresti");
}

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1207



+856 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 20:05 - pre 4 meseca
Ako razumem, za sada jedino resenje koje je ponudio Nedeljko ima kompleksnost O(n^3) sto bi bio problem da je veci broj gradova, veza i ljudi, ali posto nije...

Preko grafova bi kompleksnost bila verovatno O(n).
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199217.12.2024. u 22:59 - pre 4 meseca
Ne, ovde je složenost O(n^4), a linearno ne može.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8704
*.dynamic.isp.telekom.rs.



+2801 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199218.12.2024. u 16:36 - pre 4 meseca
Tada se u gimnazijama u prva dva razreda učio jednostavni BASIC (bez podrške za strukturno programiranje), u trećem razredu prva tri tromesečja Pascal, a u poslednjem tromesečju prolog, u četvrtom FORTRAN i asembler za Knutov zamišljeni računar MIX.

Na takičenjima se radilo uglavnom u Pascal-u, na papiru i onda se tako i ocenjivalo.

Ne bih rekao da su performanse preterano uzimane u obzir.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1207



+856 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199218.12.2024. u 16:56 - pre 4 meseca
Da se ispravim.

Za search nodova O(n^2), koji je i najnepovoljniji deo celog resenja O(n1*(n2+n3)).

Al brate nema sanse da se nateram da napisam, krečana, a ChatGPT necu iz principa.
 
Odgovor na temu

kosmopolita
Beograd

Član broj: 257864
Poruke: 160



+27 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199218.12.2024. u 17:05 - pre 4 meseca
Te neke godine sam učestvovao u pravljenju takmičara XO 5 u nizu na, tada još postojećem, SezamNetu.
Nismo objavljivali kod a moj takmičar je bio negde u sredini.
Naizmenično su startovali takmičare soko jedan ne pobedi.
Posle sam napravio win program i oni koji su probali nisu mogli da ga pobede.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4939
*.dynamic.sbb.rs.



+646 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199218.12.2024. u 17:23 - pre 4 meseca
Citat:
kosmopolita: Te neke godine sam učestvovao u pravljenju takmičara XO 5 u nizu na, tada još postojećem, SezamNetu.
Nismo objavljivali kod a moj takmičar je bio negde u sredini.
Naizmenično su startovali takmičare soko jedan ne pobedi.
Posle sam napravio win program i oni koji su probali nisu mogli da ga pobede.

XO 5 u nizu? Da li je tabla (matrica) bila neke definisane duzine?

Takodje sam radio XO 5 u nizu, za 12x12 (ne znam zasto bas 12), bio je solidno dobar, ali nikad nisam bio doradio rutinu koja od X pronadjenih dobrih poteza odabere bas bas najbolji...


[Ovu poruku je menjao X Files dana 18.12.2024. u 18:44 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4939
*.dynamic.sbb.rs.



+646 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199218.12.2024. u 17:39 - pre 4 meseca
Citat:
Nedeljko:
Tada se u gimnazijama u prva dva razreda učio jednostavni BASIC (bez podrške za strukturno programiranje), u trećem razredu prva tri tromesečja Pascal, a u poslednjem tromesečju prolog, u četvrtom FORTRAN i asembler za Knutov zamišljeni računar MIX.

Na takičenjima se radilo uglavnom u Pascal-u, na papiru i onda se tako i ocenjivalo.

Ne bih rekao da su performanse preterano uzimane u obzir.


Sve tačno.


Kaze moj sin, "šta, nema definsan format fajla, nema pripremljenih ulaznih podataka za testiranje, nema public i hidden testova". Haha...




Pri tome, retko ko je i imao kuci kompjuter, a ko ga je i imao to je uglavnom bio neki Komodor, Spektrum, Atari...za igrice. Retko ko bi kupovao XT ili kasnije 286, 386. Interneta nije bilo. Eventualno taj Sezam, ko je skapirao o cemu se radi i sta nudi.

Profesori koji su predavali informatiku, tipicno su bili matematicari, ali je bilo pitanje koliko su i oni sami tada imali vremena (mladi tek izasli sa fakulteta, matore da ne pominjem) da ovladaju vestinama dovoljnim za takmicarski nivo, tipa zadatka gore.

Knjige su takodje bile bas nekako osnovni nivo.
 
Odgovor na temu

kosmopolita
Beograd

Član broj: 257864
Poruke: 160



+27 Profil

icon Re: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 199218.12.2024. u 17:51 - pre 4 meseca
Citat:
X Files:

XO 5 u nizu? Da li je tabla (matrica) bila neke definisane duzine?

Takodje sam radio XO 5 u nizu, za 12x12 (ne znam zasto bas 12), bio je solidno dobar, ali nikad nisam bio doradio rutinu koja od X pronadjenih dobrih poteza odabere bas bas najbolji...



Bilo je čianje i pisanje iz text fajlova pa je verovatno zato bila ograničena.
Ne sećam se da li 12x12 ali nije mnogo veća bila, koliko mogu da se setim.
 
Odgovor na temu

[es] :: Art of Programming :: Zadaci za savezno takmičenje iz informatike, Novi Sad, 6 juni 1992

Strane: 1 2 3 4

[ Pregleda: 5942 | Odgovora: 66 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.