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

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

question link : https://mirror.codeforces.com/problemset/problem/1256/B solution link : https://ideone.com/JInG1y What is the problem in this anyone?

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

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

could you elaborate on how your code is supposed to work ??

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    start from 1 if in correct position continue otherwise found its position and while its not in its correct position and swap is possible i keep on swapping.

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

more specifically what is the map <ll, ll> h doing ??

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

consider the test case: 1 8 8 5 6 7 1 3 2 4

you code gives: 1 8 5 6 2 7 4 3

ans 1 8 5 6 2 7 3 4

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

Your code is swapping them before assigning right cnt, swap(a[e],a[e-1]); cnt[a[e]]=e-1; cnt[a[e-1]]=e; First update then swap cnt[a[e]]=e-1;cnt[a[e-1]]=e;swap(a[e],a[e-1]); then second thing if say a[e] is 4 and a[e-1] is 3, then you should not swap... eg take this case: n=8, arr=[8 5 6 7 1 3 2 4] after some steps it becomes 1 8 5 6 2 7 3 4, we cannot swap 3 with 7 as that operation is already used, then your code is swapping 4 with 3, hence it gives 1 8 5 6 2 7 4 3. add a condition while(e>i && a[e-1]>a[e] && h.count(e-1)==0)