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

[Zadatak] z-zurka

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] z-zurka

[ Pregleda: 1604 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

proka_92
proka_92
Smederevo

Član broj: 153372
Poruke: 69
*.dynamic.isp.telekom.rs.



+4 Profil

icon [Zadatak] z-zurka27.03.2010. u 19:21 - pre 171 meseci
Ulaz:
Sa standardnog ulaza se ucitava broj N[1] koji predstavlja broj gradova na spisku koji je dostavio prvi drugar Z-a. Nakon toga, u drugoj liniji sledi N[1] brojeva u opsegu [1..2000000000] razmaknutim blanko znakom, koji predstavlja gradove na spisku prvog drugara. Zatim se ucitava broj N[2], i slicno, iza njega N[2] brojeva koji predstavljaju gradove na spisku drugog drugara, i konacno se ucitava broj N[3] i N[3] gradova sa spiska treceg drugara. Na spisku svakog od drugara gradovi se nece ponavljati.

Izlaz:
Na standardni izlaz ispisati broj K, koji predstavlja broj gradova u koje mogu da doputuju sva tri drugara.
Link ka zadatku
Code:
#include<stdio.h>
long prvi[1001],drugi[1001],treci[1001];
int n1,n2,n3,zajednicki=0;
void swap(long *a,long *b){
    long tmp;
    tmp=*a;
    *a=*b;
    *b=tmp;}
void sort(int n,long niz[]){
    int i,j;
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++)
            if(niz[i]>niz[j])
                swap(&niz[i],&niz[j]);}
long trazi(int n,long elem,long niz[]){
    int i,j;
    i=(n-1)/2;
    j=n;
    do{
        j/=2;
        if(niz[i]==elem)
            return i;
        if(niz[i]<elem)
            i+=(j+1)/2;
        else
            i-=(j+1)/2;}
    while(j);
    return (-1);}
void input(){
    int i;
    scanf("%d",&n1);
    for(i=0;i<n1;i++)
        scanf("%ld",&prvi[i]);
    scanf("%d",&n2);
    for(i=0;i<n2;i++)
        scanf("%ld",&drugi[i]);
    scanf("%d",&n3);
    for(i=0;i<n3;i++)
        scanf("%ld",&treci[i]);}
void solve(){
    int i;
    sort(n1,prvi);
    sort(n2,drugi);
    sort(n3,treci);
    for(i=0;i<n1;i++)
        if((trazi(n2,prvi[i],drugi))&&(trazi(n3,prvi[i],treci)))
            zajednicki++;}
int main(){
    input();
    solve();
    printf("%d",zajednicki);
    return 0;}

Sta nije u redu?
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak] z-zurka27.03.2010. u 20:03 - pre 171 meseci
Debagovanjem sam ustanovio sledeće: funkcija trazi() ti vraća indeks nađenog elementa, ili -1 ako element nije nađen. Ti ovu funkciju koristiš kao da ona vraća bool. Da bi program proradio povratnu vrednost funkcije treba da porediš sa -1.
 
Odgovor na temu

proka_92
proka_92
Smederevo

Član broj: 153372
Poruke: 69
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: [Zadatak] z-zurka27.03.2010. u 21:05 - pre 171 meseci
Dada, posto moze da se desi da index bude 0, a to se tretira kao false... Ne razmisljam :) Hvala...
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] z-zurka

[ Pregleda: 1604 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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