M. Distinct Numbers – Codeforces Problem Solution in C++

Disclaimer: Make sure you tried enough before checking the solution

Problem: https://codeforces.com/group/MWSDmqGsZm/contest/223205/problem/M

#include <iostream>
#include <algorithm>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
void solution1()
{
    int size;
    cin >> size;
    if (size == 0)
    {
        cout << size;
        return;
    }
    int *arr = new int[size];
    for (int i = 0; i < size; i++)
    {
        cin >> arr[i];
    }

    sort(arr, arr + size);

    int distinct = 1;
    for (int i = 1; i < size; i++)
    {
        //  1 2 3 6 6
        if (arr[i] != arr[i - 1])
        {
            distinct++;
        }
    }
    cout << distinct;
}
void solution2()
{
    const int maxSize = 1001;
    int size, arr[maxSize];
    cin >> size;
    int posNums[maxSize] = {0}, negativeNums[maxSize] = {0}, distinct = 0;
    for (int i = 0; i < size; i++)
    {
        cin >> arr[i];
        if (arr[i] >= 0)
            posNums[arr[i]]++;
        else
            negativeNums[abs(arr[i])]++;
    }

    for (int i = 0; i < maxSize; i++)
    {
        if (posNums[i] >= 1)
        {

            distinct++;
        }
        if (negativeNums[i] >= 1)
        {

            distinct++;
        }
    }
    cout << distinct;
}
void solution3()
{
    const int maxSize = 1000;
    int size, arr[maxSize + 1];
    cin >> size;
    int distinctNums[maxSize + maxSize + 1] = {0}, distinct = 0;
    for (int i = 0; i < size; i++)
    {
        cin >> arr[i];
        distinctNums[arr[i] + 1000]++;
    }

    for (int i = 0; i < maxSize + maxSize + 1; i++)
    {
        if (distinctNums[i] >= 1)
        {
            distinct++;
        }
    }
    cout << distinct;
}

int main()
{
    solution3();
}

Assiut University Training – Newcomers Solution Functions

Leave a Comment