\ # CSP 201609 - 2 기차 티켓 구 매 (100 점)
201612-2
시험 제목:
기차 티켓 팅
시간 제한:
1.0s
메모리 제한:
256.0MB
문제 설명 은 철도 구 매 시스템 의 간단 한 좌석 배분 알고리즘 을 실현 하여 한 칸 의 좌석 분 배 를 처리 하 십시오.한 칸 에 20 줄, 한 줄 에 5 개의 좌석 이 있다 고 가정 하 세 요.편 의 를 위해 우 리 는 1 부터 100 까지 모든 좌석 번 호 를 주 었 다. 첫 번 째 줄 은 1 부터 5 번, 두 번 째 줄 은 6 부터 10 번 으로 순서대로 유추 하고 20 번 째 줄 은 96 에서 100 번 이다.표를 살 때 한 사람 이 한 장 또는 여러 장 을 살 수 있 으 며 최대 5 장 을 넘 지 않 는 다.만약 이 몇 장의 표 가 같은 줄 의 번호 가 인접 한 좌석 에 배 치 될 수 있다 면, 번호 가 가장 작은 인접 좌석 에 배치 해 야 한다.그렇지 않 으 면 번호 가 가장 작은 빈 좌석 몇 개 에 배치 해 야 한다.초기 에 차표 가 모두 구 매 되 지 않 았 다 고 가정 하고 지금 은 구 매 명령 을 내 렸 으 니 이 명령 들 을 처리 해 주 십시오.입력 형식 입력 의 첫 줄 은 구 매 명령 의 수량 을 나타 내 는 정수 n 을 포함 합 니 다.두 번 째 줄 은 n 개의 정 수 를 포함 하고 모든 정수 p 는 1 에서 5 사이 에 구입 할 표 수 를 표시 하 며 인접 한 두 숫자 사이 에 빈 칸 으로 구분 합 니 다.출력 형식 은 n 줄 을 출력 하고 줄 마다 명령 에 대응 하 는 처리 결 과 를 출력 합 니 다.티켓 구 매 명령 p 에 대해 서 는 p 장의 차표 번 호 를 출력 하고 작은 것 부터 큰 것 까지 정렬 합 니 다.샘플 42542 샘플 을 입력 하여 출력 122678901112 141434 샘플 설명 1) 티켓 2 장 을 구 매 하여 좌석 1, 2 를 받 습 니 다.2) 표 5 장 을 구 매 하여 좌석 6 ~ 10 을 받 습 니 다.3) 표 4 장 을 구 매 하여 11 ~ 14 석 을 받 습 니 다.4) 표 2 장 을 구 매 하여 좌석 3, 4 를 받 습 니 다.평가 사례 규모 와 약정 은 모든 평가 사례 에 대해 1 ≤ n ≤ 100, 모든 구 매 수량 의 합 은 100 을 초과 하지 않 습 니 다.
주의: "그렇지 않 으 면 번호 가 가장 작은 몇 개의 빈 좌석 에 배치 해 야 합 니 다. (이웃 여 부 를 고려 하지 않 습 니 다)" 라 는 말 은 고려 하지 않 았 습 니 다. 예 를 들 어 먼저 20 명 이 모두 4 장의 표를 샀 고 21 명 이 두 장의 표를 사 야 합 니 다. 그러면 절 차 는 좌석 을 배치 할 수 없습니다.
#include
int main()
{
int a[100], n, i, j, k = 1;
scanf_s("%d", &n);
for (i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
int b[20];
for (i = 0; i < 20; i++)
b[i] = 5;//
for (i = 0; i < n; i++)
{
if (b[19] == 5)
{
for (j = 0; j < 20; j++)//
{
if (b[j] >= a[i])
{
for (k = 5 * j + 6 - b[j]; k < 5 * j + 6 - b[j] + a[i]; k++)
{
printf("%d ", k);//
}
printf("
");
b[j] = b[j] - a[i];//
break;
}
}
}
else
{
int flag = 1;
for (j = 0; j < 20; j++)//
{
if (b[j] >= a[i])
{
for (k = 5 * j + 6 - b[j]; k < 5 * j + 6 - b[j] + a[i]; k++)
{
printf("%d ", k);//
}
printf("
");
b[j] = b[j] - a[i];//
flag = 0;
break;
}
}
if (flag)
{
for (j = 0; j < 20&&a[i]>0; j++)
{
while (b[j] != 0&&a[i]>0)
{
k = 5 * j + 6 - b[j];
printf("%d ", k);
b[j]--;
a[i]--;
}
}
printf("
");
}
}
}
return 0;
}
주의: "그렇지 않 으 면 번호 가 가장 작은 몇 개의 빈 좌석 에 배치 해 야 합 니 다 (이웃 여 부 를 고려 하지 않 습 니 다)" 라 는 말 은 고려 하지 않 았 습 니 다. 예 를 들 어 먼저 20 명 이 모두 4 장의 표를 샀 고 21 명 은 두 장의 표를 사 야 합 니 다. 시간 이 부족 하면 이런 상황 을 제외 하고 90 점 을 받 을 수 있 지만 코드 량 은 크게 줄 어 들 것 입 니 다.
전송 문: \ # CSP 201609 - 2 열차 티켓 구 매 (90 분 판)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CCF-201509-4-고속도로이 문제는 강연통분량을 찾고 그림의 모든 강연통분량을 찾으며 각 분량의 도시 대수를 계산하여 답을 얻어야 한다는 것이 분명하다.도시 쌍을 계산하는 방법은 강연통분량의 결점수*(강연통분량의 결점-1)/2 python ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.