Решение задачи Телефонный справочник с Acmp

Без пояснения   Просмотров: 19



Код


    #include<iostream>

#include<string>

using namespace std;

struct abon{ int nom; string fio; string adr;

};

void Quick(abon a[],int n){

	if(n<2)return;

	int L=0,R=n-1,m=a[n/2].nom;

	do{while(a[L].nom<m)L++; while(a[R].nom>m)R--;

	if(L<=R){swap(a[L],a[R]);L++;R--;}

	}while(L<=R);

	Quick(a,R+1); Quick(a+L,n-L);

}

main(){

	abon a[30000]; int n,m,i,k,j,L,R;string c;

	cin>>n>>m;

	for (i=0;i<n;++i){

		cin>>a[i].nom;

		getline(cin,c);

		getline(cin,a[i].fio);

		getline(cin,a[i].adr);

	}

	Quick(a,n);

	for(j=0;j<m;++j){

		cin>>k;

		L=0; R=n;

		do{ i=(L+R)/2;

			if(a[i].nom>k)R=i; else L=i;

		}while(a[i].nom!=k);

		cout<<a[i].fio<<" ("<<a[i].adr<<')'<<endl;

	}



}   
        

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться