fbpx

Problema #130 – SortCif – Rezolvari PBInfo

de Mihai-Alexandru

Se dă un vector cu n elemente numere întregi.

Cerinţa

Să se ordoneze crescător elementele unui vector crescător după suma cifrelor.

Date de intrare

Fişierul de intrare sortcif.in conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.

Date de ieşire

Fişierul de ieşire sortcif.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.

Restricţii şi precizări

  • 0 < n ≤ 100
  • valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 230.

Exemplu

sortcif.in

6
89 22 91 4005 51 721

sortcif.out

22 51 4005 91 721 89 
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sortcif.in");
ofstream fout("sortcif.out");

int sum(int n)
{
    int s=0;
    while (n)
    {
        s+=n%10;
        n/=10;
    }
    return s;
}

int main()
{
    int n;
    fin >> n;
    int a[1001];
    int v[1001];
    int p[1001];
    for (int i = 0 ; i < n; ++i)
    {
        fin >> a[i];
        v[i]=sum(a[i]);
    }
    sort(v,v+n);
    for (int i = 0 ; i < n ; ++i)
    {
        int cnt=0;
        for (int j = 0 ; j < n ; ++j)
        if (v[i]==sum(a[j]) && cnt==0 && p[j]!=a[j])
        {
        fout << a[j] << ' ';
        cnt++;
        p[j]=a[j];
        }
    }

    fin.close();
    fout.close();

    return 0;
}
Comentarii

S-ar putea sa iti placa