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 등 학생 의 반 과 학 번 을 출력 해 야 하기 때문에 우 리 는 마지막 에 판단 을 더 해 야 한다.
 

좋은 웹페이지 즐겨찾기