PTA L1-005 시험 좌석 번호 (15 점)

주제 설명 :

PAT 각 후보 시험 좌석 수 개의 할당되며, 테스트 시스템은 시트이고, 시트는 시험이다. 정상적인 상황에서는 입학 테스트 시스템의 첫 번째 후보는 좌석 번호, 테스트 시스템에 착석 상태를 얻기 위해, 시스템이 검사를 위해 후보의 좌석 번호가 표시는 시험 후보는 자리를 취할 수있는 테스트를 변경해야합니다. 그러나 후반, 테스트 시스템이 종료 된 일부 후보자, 그들은 단지 배경에서 자신의 시험 좌석 번호를 찾아, 테스트 시스템은 좌석 번호가 당신에게 돌려했다받을 수 있습니다.

입력 형식 :

제 1 입력 라인 N 행 하였다 양의 정수 N (≤1000)를 부여하고, 각 행의 후보에 대한 정보를 제공한다 : 准考证号 试机座位号 考试座位号. 상기 准考证号(1)로부터 N 번째 자리에 16 비트 번호. 모든 사람이 다르고, 시간이 두 사람이 같은 자리에 할당 없다는 것을 보장하기 위해 티켓 번호를 입력합니다.

후보 정보 후에 공백으로 구분 열 좌석 번호를 조회 할 수있는 M 시험기 분석 하였다 양의 정수 M (≤N)을 준다.

출력 형식 :

테스트 시스템에 대응하는 각 유저 수는 출력 후보 티켓 번호 및 좌석 번호를 검사에 대응하는 행에 조회 할 공백으로 분리된다.

샘플 입력 :

4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4

샘플 출력 :

3310120150912002 2
3310120150912119 1

보고서 문제 해결 :

1 : 버킷 또는 정렬 정보는 상기 테스트 시스템의 수에 따라서 저장되어있는 경우, 통 1000 구축하는 방법을 통해.

2 : 장점 : 빨리 찾기. 단점 :하지만 공간의 낭비.

3 : 및 https://blog.csdn.net/jun_____/article/details/103962906 유사한이 문제 솔루션입니다.

코드 :

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1000+10;
struct people{
    char sno[20];//准考证号
    ll testNum, examNum;//测试号码,考试号码
}peoples[N];
int main(){
    ll n, m, t, e;
    char s[20];
    scanf("%lld", &n);
    for(ll i=0; i<n; ++i){
        scanf("%s%lld%lld", s, &t, &e);
        strcpy(peoples[t].sno, s);
        peoples[t].testNum = t, peoples[t].examNum = e;
    }
    scanf("%lld", &m);
    while(m--){
        ll x;
        scanf("%lld", &x);
        printf("%s %lld\n", peoples[x].sno, peoples[x].examNum);
    }
    return 0;
}

 

게시 76 개 원래 기사 · 원의 칭찬 0 · 조회수 3742

추천

출처blog.csdn.net/jun_____/article/details/103963287