algoritmasını kuramadım, çözümleri var ama tam olarak anlayamadım
comments
1 references
// Comments are closed.
algoritmasını kuramadım, çözümleri var ama tam olarak anlayamadım
// Comments are closed.
Selamlar,
Benim bu probleme yaklasimim su sekilde oldu:
– Oncelikle siradaki kisiler uzerinden tek tek gideriz.
– Her kisi orjinal pozisyonundan ne kadar uzak diye bakariz. Orjinal pozisyondan 3 veya daha fazla uzakta olan birisi varsa bu problem kaotiktir. Dolayisiyla hicbirsey yapmadan cikariz. Eger uzaklik 2 veya daha az ise, her bir kisi icin uzakliklari toplariz.
– En son uzaklik toplamlarini ikiye boleriz cunku tek bir degisimi iki kere saymis olduk.
Ornek uzerinden gidersek:
> 3 pozisyonuna 1 birim uzaklikta
1+1+2+1+1=6 (uzakliklar toplami)
Bunu ikiye bolersek bizden istenen sonuc olan 3’u elde ederiz.
Neden ikiye boluyoruz? Cunku 1 ve 2 icin orjinal uzakliklarina 1 birim uzaklikta dedik ve uzaklik toplamlari 1+1=2 oldu. Ama biz aslinda ikisinin yerini tek bir seferde degistirebiliriz.
Ikinci ornek senaryoya bakalim: 2 5 1 3 4
// your code goes here int totalDistance=0; for(int q_i=0; q_i < n; q_i++){ int distance = Math.abs(q_i+1-q[q_i]); if(distance>2) { System.out.println("Too chaotic"); break; } totalDistance += distance; } int countBribe = totalDistance/2; System.out.println(countBribe);