All pastes #52391 Raw Edit

Anonymous

public c v1 · immutable
#52391 ·published 2006-04-30 15:09 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <string.h>int porownaj(const void *wsk_1, const void  *wsk_2);typedef struct kod{    long long int pesel;    long long int mro;} REKRUT;REKRUT osoba[556977];struct mroczki{    long long int mro1;    long long int mro2;} ELEMENTY[556977];int main(){    struct kod *wsk_pesel, key;    int s=0; /*liczba testow*/    long long int p=0, z=0, q=0; /*liczba chopakoof oraz liczba zamknietych MRO i ilosc kodow do wypisania*/    long long int i=0, j=0; /*zmienne pomocnicze*/    long long int ilosc=0, ile_peseli;    long long int pezel;    long long int tablica[556977]={0}, wejscie, wyjscie, pom1, pom2, wynik, wynik1;    /*ilosc testow*/    scanf("%d\n", &s);    for(; s>0; s--)    {        /*wszytywanie chlopakow i sortowanie wg pesela*/        scanf("%lld\n", &p);        ilosc=p;        ile_peseli=p;        for(i=0; p>0; p--, i++)        {            scanf("%lld\n", &osoba[i].pesel);            scanf(" %c", &wejscie);            wyjscie=(wejscie-'A'+1)*17576;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'A'+1)*676;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'A'+1)*26;            scanf("%c\n", &wejscie);            wyjscie=wyjscie+(wejscie-'0'+1);            osoba[i].mro=wyjscie;            j=i;        }        qsort(osoba, ilosc, sizeof(REKRUT), &porownaj);        /*zamkniete MRO/ nowe MRO  - kodowanie itp.*/        scanf("%lld\n", &z);        for(i=0; z>0; z--, i++)        {            scanf("%c", &wejscie);            wyjscie=(wejscie-'A'+1)*17576;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'A'+1)*676;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'A'+1)*26;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'0'+1);            ELEMENTY[i].mro1=wyjscie;            pom1=wyjscie;            scanf(" %c", &wejscie);            wyjscie=(wejscie-'A'+1)*17576;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'A'+1)*676;            scanf("%c", &wejscie);            wyjscie=wyjscie+(wejscie-'A'+1)*26;            scanf("%c\n", &wejscie);            wyjscie=wyjscie+(wejscie-'0'+1);            ELEMENTY[i].mro2=wyjscie;            j=i;        }        /*tablica[pom1]=wyjscie;*/        /*printf("%lld %lld\n", j, tablica[pom1]);*/        --i;        pom1=ELEMENTY[i].mro2;        tablica[pom1]=0;        for(;i>0; i--)        {            if(tablica[ELEMENTY[i].mro2]==0)            {                tablica[ELEMENTY[i].mro1]=ELEMENTY[i].mro2;            }            else            {                tablica[ELEMENTY[i].mro1]=tablica[ELEMENTY[i].mro2];            }        }        /*ilosc peseli do wypisania*/        scanf("%lld", &q);        for(; q>0; q--)        {            scanf("%lld", &pezel);            key.pesel = pezel;            wsk_pesel = bsearch(&key, osoba,ilosc , sizeof(REKRUT), porownaj);            pom1=wsk_pesel->mro;            if(tablica[wsk_pesel->mro]==0)            {            /*ROZKODOWYWANIE*/                printf("%lld", wsk_pesel->pesel);                wynik=wsk_pesel->mro;                wynik/=17576;                wynik1=wynik+'A'-1;                printf(" %c", wynik1);                wynik*=17576;                wynik=wsk_pesel->mro - wynik;                pom1=wynik;                wynik/=676;                wynik1=wynik+'A'-1;                printf("%c", wynik1);                wynik*=676;                pom1-=wynik;                wynik=pom1;                pom1=wynik;                wynik/=26;                wynik1=wynik+'A'-1;                printf("%c", wynik1);                wynik*=26;                pom1-=wynik;                wynik=pom1;                wynik1=wynik+'0'-1;                printf("%c\n", wynik1);            }            else            {            /*ROZKODOWYWANIE*/                printf("%lld", wsk_pesel->pesel);                wynik=tablica[wsk_pesel->mro];                wynik/=17576;                wynik1=wynik+'A'-1;                printf(" %c", wynik1);                wynik*=17576;                wynik=tablica[wsk_pesel->mro] - wynik;                pom1=wynik;                wynik/=676;                wynik1=wynik+'A'-1;                printf("%c", wynik1);                wynik*=676;                pom1-=wynik;                wynik=pom1;                pom1=wynik;                wynik/=26;                wynik1=wynik+'A'-1;                printf("%c", wynik1);                wynik*=26;                pom1-=wynik;                wynik=pom1;                wynik1=wynik+'0'-1;                printf("%c\n", wynik1);            }        }        scanf("\n");        printf("%c", '\n');        p=q=wynik=wynik1=pom1=pom2=z=i=0;        memset(tablica, 0, sizeof(long long int)*456977);    }    printf("%c", '\n');    return 0;}int porownaj(const void *wsk_1, const void  *wsk_2){    REKRUT  *Wsk_1 = (REKRUT *)wsk_1;    REKRUT  *Wsk_2 = (REKRUT *)wsk_2;    return (Wsk_1->pesel - Wsk_2->pesel);}