NYOJ 240 샤 오 밍 의 조사 통계 (2)
8714 단어 통계
1 #include<stdio.h>
2 #include<iostream>
3 #include<algorithm>
4 #include<string>
5 using namespace std;
6 struct chenji
7 {
8 int bj;//
9 int xh;//
10 int cj;//
11 int mc;//
12 } c[100001];
13 bool comp(chenji x,chenji y)// 。
14 {
15 if(x.cj<y.cj) return true;// 。
16 if(x.cj==y.cj&&x.bj<y.bj)return true;// , 。
17 if(x.cj==y.cj&&x.bj==y.bj&&x.xh<y.xh)return true;// , , 。
18 else return false;
19 }
20 int main()
21 {
22 int i,j,k,l,n,m,count=0,s,a;
23 scanf("%d%d",&n,&m);
24 for(i=1;i<=n;i++)//
25 { scanf("%d",&s);
26 for(j=1;j<=s;j++)
27 {
28 c[count].bj=i;// count , count++, 。
29 c[count].xh=j;
30 scanf("%d",&k);
31 c[count].cj=k;
32 count++;// , 。
33 }
34 }
35 sort(c,c+count,comp);
36 l=1;// l
37 c[count-1].mc=1;// 1,
38 for(i=count-2;i>=0;i--)
39 {if(c[i].cj==c[i+1].cj)// ,
40 c[i].mc=l;
41 else
42 c[i].mc=++l;
43 }
44 for(i=1;i<=m;i++)
45 {
46 scanf("%d",&a);
47 for(j=0;j<count;j++)// 、 , 0
48 {
49 if(c[j].mc==a)
50 printf("%d %d
",c[j].bj,c[j].xh);
51 }
52
53 }return 0;
54 }
이 문 제 는 항 전의 그 오디 션 여주인 공 과 매우 비슷 하 다.하지만 이 문 제 는 판단 을 더 해 야 한 다 는 점 이 다르다.성적 순 위 는 공동 순 위 를 고려 해 야 한다.
이 문 제 는 처음에 성적 의 순 서 를 낮 추고 순 서 를 매 기 는 것 이 었 다. 나중에 수출 결 과 를 발 견 했 을 때 어떻게 수출 해 야 할 지 몰 랐 다. 한참 이 걸 렸 고 생각 이 없어 서 어떻게 여러 층 으로 비교 해 야 할 지 몰 랐 다.
문제 풀이 방향:
구조 체 를 정의 하고 구조 체 로 학급, 학 번, 성적, 순 위 를 저장 합 니 다.그리고 sort 로 정렬 합 니 다.그러나 처음에 정렬 함 수 를 써 서 먼저 성적 에 대한 순 서 를 실현 해 야 한다. 성적 은 똑 같이 반 에 대한 순 서 를 하고 반 은 똑 같은 다음 에 학 번 에 대해 순 서 를 매 겨 야 한다.
m 등 학생 의 반 과 학 번 을 출력 해 야 하기 때문에 우 리 는 마지막 에 판단 을 더 해 야 한다.