Всем привет ! Есть такая задача она проходит 50%. Помогите пожалуйста найти мою ошибку ,ни как не могу найти ! Вот задача :
Целое число A содержит не более 1000 десятичных цифр. Обозначим через B и C соответственно максимальное и минимальное из чисел, составленных из цифр A. Числа B и С должны иметь тот же знак, что и A. Найдите разность между B и C.
Входные данные
В единственной строке находится десятичная запись числа A.
Выходные данные
В одной строке искомая разностью.
Пример входных данных
418
Пример выходных данных
693
Пример входных данных
-1032
Пример выходных данных
2187
Пример входных данных
8814
Пример выходных данных
7353
Мой код :
#include <bits/stdc++.h>
#define MAXN 200010
using namespace std;
long long sto_int(string s)
{
stringstream ss(s);
long long n;
ss >> n;
return n;
}
bool sorthus(char i, char j)
{
return (i > j);
}
int main()
{
string cis, cis2, cis3;
char temp;
cin >> cis;
cis3 = cis;
sort(cis3.begin(), cis3.end());
long long cnt = 0;
for (long long i = 0; i < cis3.size(); i++)
{
if (cis3[i] == '0')cnt++;
}
if (cis3[0] == '-')
{
if (cis3[1] == '0')
{
swap(cis3[1], cis3[1 + cnt]);
}
}
else
{
if (cis3[0] == '0')
{
swap(cis3[0], cis3[0 + cnt]);
}
}
cis2 = cis3;
if (cis[0] == '-')
{
sort(cis2.begin() + 1, cis2.end(), sorthus);
}
else
{
sort(cis2.begin(), cis2.end(), sorthus);
}
long long cis22 = sto_int(cis2);
long long cis33 = sto_int(cis3);
if (cis22 < 0)cout << cis33 - cis22 << endl;
else cout << cis22 - cis33 << endl;
cout << cis33 << " " << cis22 << endl;
cout << cis3 << endl;
return 0;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники