All pastes #52384 Raw Edit

Anonymous

public c v1 · immutable
#52384 ·published 2006-04-30 14:38 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]);*/		pom1=ELEMENTY[--i].mro2;		for(;i+1>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+2 , 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);}