Thread overview
Toplamları Eşit Olan Sayıların İndexinin Bulunması
Jul 22, 2016
kerdemdemir
Jul 22, 2016
kerdemdemir
July 22, 2016

Elimizde; "1 5 7 4 4 3" gibi bir dizi olduğunu varsayalım
Burda 1-7,5-3 ve 4-4 ün toplamı 8 ediyor. Soruda çiftlerin toplamının eşit olduğu sayıların indekslerini yazdırmamız isteniyor.

Örneğin yukardaki dizi için doğru cevap:

1 3 (1 ve 7'nin indeksleri)
6 2 (3 ve 5'nin indeksleri)
4 5 (4 ve 4'nin indeksleri)

Ben bu soruyu D nin çok beğendiğim topNIndex metodu yardımı ile çözdüm. Eğer eşit olan sayı çiftleri varsa en büyük+en küçük, 2. en büyük + 2. en küçük olduğunu gözlemliyerek algoritmamı şöyle yazdım :

   const kardSayisi = stdin.readln.strip.to!size_t;
   auto numaralar = stdin.readln.strip.split().map!(a => to!int(a)).array();
	int[] siralanmisIndexDizisi = new int[kardSayisi];
	topNIndex(numaralar, siralanmisIndexDizisi, SortOutput.yes);
	for ( int i = 0; i < kardSayisi/2; i++ )
	{
		writeln( min(siralanmisIndexDizisi[i], siralanmisIndexDizisi[ kardSayisi - 1 - i ]) + 1, " ", max( siralanmisIndexDizisi[i], siralanmisIndexDizisi[ kardSayisi - 1 - i ] ) + 1 );
	}

Bir yorumunuz olurmu, mesela şu topNIndex metoduna new ile bir array göndermek pek hoşuma gitmiyor bir çözümünüz varmıdır? Sorunun tamamı "http://codeforces.com/contest/701/problem/A"'dan görünebilir.

Sevgiler herkese
Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 22, 2016

Ali Hocam Selam

Bu topNIndex şöyle bir dizide " 10 10 10 10 " şöyle bir sonuç üretti " 2 1 3 4 " fakat sorunun istediği " 1 2 3 4"
o nedenle max-min methodlarını eklemek durumunda kaldım.

Çok sağol gösterdiğin yöntem için.

Erdemdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 22, 2016

Son döngü için belirli bir nedeni olmadan benim aklıma şöyle bir şey geldi:

   while (!siralanmisIndexDizisi.empty) {
       writefln("%s %s",
                siralanmisIndexDizisi.front + 1,
                siralanmisIndexDizisi.back + 1);

       siralanmisIndexDizisi.popFront();
       siralanmisIndexDizisi.popBack();
   }

siralanmisIndexDizisi için yer ayırmak zorundayız çünkü topNIndex, üzerinde çalışmak için o kadar yer gerektiriyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 22, 2016

Soru 10 10 10 10 için herşey kabul edilir diyor: "any distribution is acceptable". Ama önemli değil, seninkini de söylüyor olabilirdi. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]