ENG  RUS Timus Online Judge
Online Judge
Problems
Authors
Online contests
Site news
Webboard
Problem set
Submit solution
Judge status
Guide
Register
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

## Discussion of Problem 1123. Salary

WA#4
Posted by Igor Railean 20 Oct 2017 17:09
Don`t know what to do. My prog passes all tests like
1992, 199999992, 1-digit numbers. It passes all teste I`ve seen on this forum. Please, tell me, what can be the problem. Thank you.

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
typedef long long ll;

string make_palindrome(string str)
{
string palindrome = str;
if (str.size() % 2 == 0)
{
int j = 0;
for (int i = 0; i < str.size() / 2; i++,j++)
palindrome[j] = str[i];
for (int i = str.size() / 2 - 1; i >= 0; i--,j++)
palindrome[j] = str[i];
}
else
{
int j = 0;
for (int i = 0; i < str.size() / 2; i++,j++)
palindrome[j] = str[i];
for (int i = str.size() / 2; i >= 0; i--,j++)
palindrome[j] = str[i];
}
return palindrome;
}

{

int start = 0;
if ((str->size() - 1) % 2 == 0)
start = (str->size() - 1) / 2;
else start = (str->size() - 1) / 2 + 1;
for (int i = start; i >= 0; i--)
{
if ((*str)[i] + 1 < '9')
{
if ( i == start)(*str)[i]++;
break;
}
else {
(*str)[i] = '0';
(*str)[i - 1]++;
}
}
}
void extract_1(string *str)
{
int start = 0;
if ((str->size() - 1) % 2 == 0)
start = (str->size() - 1) / 2;
else start = (str->size() - 1) / 2 + 1;
for (int i = start; i >= 0; i--)
{
if ((*str)[i] - 1 >= '0')
{
(*str)[i]--;
break;
}
else {
(*str)[i] = '9';
}
}
}

int main(void)
{
string in;
cin >> in;
string stemp = make_palindrome(in);
string ans;
if (in.size() == 1)
{
cout << in;
return 0;
}
if (in.compare(stemp) == 1)
{
string str = '0' + in;
if (str[0] != '0')
ans = make_palindrome(str);
else {
string temp = str;
temp.erase(temp.begin());
ans = make_palindrome(temp);
}
}
else if (in.compare(stemp) == -1)
{
string str = '0' + in;
extract_1(&str);
if (str[0] != '0')
ans = make_palindrome(str);
else {
string temp = str;
temp.erase(temp.begin());
ans = make_palindrome(temp);
}
}
else
{
cout << in;
return 0;
}

if (ans.compare(stemp) == 1)
{
cout << ans;
}
else if (ans.compare(stemp) == -1)
{
cout << stemp;
}
else cout << stemp;

return 0;
}

Edited by author 20.10.2017 17:12
Re: WA#4
Posted by Igor Railean 20 Oct 2017 17:24
Input: 798.
Output: 1001.
Problem in add_1 function, changed < '9' on <= '9' got AC.
Re: WA#4
Posted by Anupam Ghosh 11 Aug 2019 20:27
798
808