코드포스(CodeForce)

Codeforces Round #467 (Div. 2) - A. Olympiad

cepiloth 2018. 8. 17. 18:13
반응형


1. 문제


2. 알고리즘

키워드 - 구현


* 문제 접근


입력 받은 원소의 집합을 만든다.

제약 조건은 1 명이라도 학위를 수여하게 되면 모두가 학위를 수여 받아야 한다.

score 가 0 인 사람은 학위를 수여 받지 못한다.



[입력 받은 원소 중에 0 값이 있는지 검사하는 FLAG]

[0이 아닌 score 만 저장 한다]

[map 자료구조에 score를 넣어 중복되는 원소를 제거 한다 꼼수]

map에 사이즈를 출력


3. 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>  
#include<string.h>  
#include<stdlib.h>  
#include<queue>  
#include<stack>  
#include<math.h>  
#include<vector>  
#include<map>  
#include<set>  
#include<stdlib.h>  
#include<cmath>  
#include<string>  
#include<algorithm>  
#include<iostream>  
#include <functional>         // greater 사용 위해 필요  
using namespace std;
 
int main()
{
    long long n;    cin >> n;
 
    vector<int> arr;
    
    //[입력 받은 원소 중에 0 값이 있는지 검사하는 FLAG]
    bool hasZero = false;
 
    for (int i = 0; i < n; i++) {
        int count;
        cin >> count;
        if (count == 0)
            hasZero = true;
        else {
            // [0이 아닌 score 만 저장 한다]
            arr.push_back(count);
        }
    }
 
    // [map 에다가 자료를 넣어 중복되는 원소를 제거 한다 꼼수]
    map<intint> mm;
    for (int i = 0; i < arr.size(); i++) {
        mm[arr[i]]++;
    }
 
    int sol = mm.size();
 
    cout << sol << endl;
 
    return 0;
}
cs

반응형