Задача на разности

197
08 мая 2017, 02:30

Всем привет ! Есть такая задача она проходит 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;
}
READ ALSO
Реализация CRC-8. За что отвечает параметр init?

Реализация CRC-8. За что отвечает параметр init?

Кодирую программку для CRC разных стандартов(побитовая обработка) Застрял на параметре init

216
Требуется найти ошибку в коде [требует правки]

Требуется найти ошибку в коде [требует правки]

Программа компилируется, но при запуске и вводе первого значения вылетает ошибкаВ чем проблема понять не могу

185
Использование string в функциях scanf и printf

Использование string в функциях scanf и printf

Могут ли функции scanf и printf работать с переменными типа string? Если да, то как это сделать, например, в данном коде?

264
Содержит ли данный код UB

Содержит ли данный код UB

UB вряд ли (хотя пусть это подтвердят гуру в стандартах), но вот огрести так неприятностей - запростоПредставим, что Test запрашивает какой-то...

205