Блог пользователя checkMate09

Автор checkMate09, история, 8 лет назад, По-английски

i was coding solution for the problem C. The Smallest String Concatenation . the solution depends mainly on overriding the cmp() function. first version caused RTE

bool cmp(const string &a, const string &b){

    return a+b <= b+a;
}

second version Accepted without = sign.

bool cmp(const string &a, const string &b){

    return a+b < b+a;
}

why the = sign caused RTE ?

UPD : RTE submission http://mirror.codeforces.com/contest/632/submission/20033016

  • Проголосовать: нравится
  • +12
  • Проголосовать: не нравится

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Can you provide a link to your submissions please.

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Cycle.

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Comparators in C++ are different than Java. In C++ you should always return strictly bigger or smaller. Unlike Java where equality is okay.

I'm not sure about details, but for comparing stuff, always use < or > in C++. ( At least in terms of what is commonly used for CP).

RTE happens because it can't decide which should come first, kind of a cyclic bigger than or equal like a guy pointed above.