alpsahin/tubitak-olimpiyat-dataset-v2 huggingface dataset:
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 20

[18-20 soruları için açıklama]
100 adet öğrenci mezuniyet resmi için, her öğrencinin sırası 1 ile 100 arasında bir tamsayı olmak üzere, sıraya dizilmiştir. Çekilecek fotoğrafın güzel olabilmesi için belli düzenlemelerin yapılması gerekmektedir. Öğrenciler bu düzenlemeler için gereken bilgileri kolaylık sağlaması için ezberlemiştir. Her öğrenci, 2'nin her doğal sayı kuvveti a için, kendisinden başlayan ve a uzunluğundaki aralıktaki en uzun öğrencinin boyunu ve aralıktaki toplam boy uzunluğunu ezberlemiştir.
Örnek: 40. sıradaki öğrenci [40, 40], [40, 41], [40, 43], [40, 47], [40, 55], [40, 71] aralıklarındaki en uzun 
öğrencinin boyunu ve bu aralıklardaki toplam boy uzunluklarını ezberlemiştir.

---

Kaç farklı öğrenci aralığı uzunluğu için en fazla 2 öğrenciye danışarak o aralıktaki öğrencilerin boyları toplamını bulabiliriz?

Şıklar:
A) 12 | B) 16 | C) 20 | D) 24 | E) 28

Cevap: E 28

Çözüm:
Bu soruda bizden ilk 100 pozitif tamsayıdan kaç tanesinin ikilik tabandaki gösteriminde bir yada iki tane 1 bulunduğunu hesaplamamız istenmektedir. 1 ile 100 arasındaki sayılar ikilik tabanda 7 basamak kullanılarak ifade edilebilir. Bu yüzden ikilik tabandaki gösteriminde bir tane 1 sayısı bulunan toplam  \( (7,1) = 7 \)  sayı vardır. Bunlar da ikinin doğal sayı kuvvetleri olan 1, 2, 4, 8, 16, 32 ve 64 sayılarıdır. İkilik tabandaki gösteriminde iki tane 1 sayısı bulunan toplam  \( (7,2) = 21 \)  sayı vardır. Burada dikkat edilmesi gereken husus içerisinde en fazla iki tane 1 bulunan ikilik tabandaki her 7 basamaklı sayının 100 ve 100'den küçük olup olmadığıdır. Çünkü bu şartları sağlayan ve 100'den büyük olan sayılar varsa onların sayılmaması gerekmektedir. İstenen şartları sağlayan en büyük sayı  \( 64 + 32 = 96 \)  olduğu için sayılmaması gereken sayı yoktur. Bu yüzden cevap  \( 7 + 21 = 28' \) dir.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 21

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int kontrol;
for(kontrol = 1; kontrol <= 5; kontrol++)
{
switch(kontrol)
{
case 1: printf("%s", "1");
case 2: printf("%s", "2");
case 3: printf("%s", "3"); break;
default: printf("%s", "d");
```
Yukarıdaki programın çıktısı ne olur?

Şıklar:
A) 123d123d123d123d123d | B) 123dd | C) 123233dd | D) 123d | E) 1233dd

Cevap: C 123233dd

Çözüm:
Switch-Case bloğunun bazı kısımlarında break ifadesinin kullanılmadığı görülmektedir. Bu durumda program break ifadesini görene kadar çalışmaya devam edecektir.
Kontrol = 1 için ekrana 123 değerleri yazdırılacaktır.
Kontrol = 2 için ekrana 23 değerleri yazdırılacaktır.
Kontrol = 3 için ekrana 3 değeri yazdırılacaktır.
Kontrol = 4 için ekrana 4 değeri yazdırılacaktır.
Kontrol = 5 için ekrana 5 değeri yazdırılacaktır.
Tamamı bir araya geldiğinde 123233dd çıktısı olduğu görülecektir.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 22

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int main() {
int x;
do {
printf("x: ");
scanf("%d", &x);
} while (x<3 || x%2==0);
printf("Dogru deger girildi.\n");
}
```
Aşağıdaki girdilerden hangisi için programdaki *scanf* içeren satır tam olarak 5 kez çalışır? Not: Girdinin sonunda okunmamış olarak kalan sayılar olabilir.

Şıklar:
A) -3 0 1 7 6 3 7 12 11 | B) 6 4 2 3 11 8 9 16 | C) 1 4 2 0 9 2 4 12 13 | D) 1 9 2 4 3 5 12 11 10 | E) 8 2 0 6 -2 5 3 14 12 11

Cevap: C 1 4 2 0 9 2 4 12 13

Çözüm:
while döngüsü girilen sayı 3'ten büyük ya da 3'e eşit bir tek sayı olana kadar çalışmaya devam eder. Verilen girdilerde A şıkkında bu şartları sağlayan sayı 4. sayı, B şıkkında 4. sayı, C şıkkında 5. sayı, D şıkkında 2. sayı ve E şıkkında da 6. sayıdır. Bu durumda
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 23

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıdaki C dili *if* ifadelerinden hangisi Türkçe olarak "x sayısı eğer [3,10) aralığında değil ise" durumunu doğru olarak gerçekleştirir?

Şıklar:
A) if (!(x>=3 && x<10)) | B) if ((x<=3 && x>10)) | C) if ((x>=3 || x>10)) | D) if (!(x<3 && x>=10)) | E) if (!(x>=3 || x<10))

Cevap: A if (!(x>=3 && x<10))

Çözüm:
[3,10) aralığı C dilinde x>=3 && x<10 ile belirtilir. A şıkkında bu ifade yer almaktadır ve ! operatörü ilke x'in bu aralıkta olmadığı durum doğru bir şekilde belirtilmiştir. Diğer şıklardaki ifadeler farklı durumları gösterdiklerinden
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 24

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıdaki program parçası çalıştığında çıktı olarak ne üretir?
```c
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int i,j,t;
t = 0;
for (i=0; i < 3; i++)
for (j=0; j<i; j++)
t+=a[i][j];
printf("%d\n",t);
```

Şıklar:
A) 12 | B) 15 | C) 19 | D) 45 | E) Derleme hatası verir

Cevap: C 19

Çözüm:
İç içe for döngüleri ile verilen bir 3x3 boyutlu matrisin sol alt üçgenindeki sayıları toplamı hesaplanmaktadır ve j<i diye belirtildiği için köşegendeki sayılar dahil değildir. Solt alt üçgendeki sayılar 4,7 ve 8 olduğu için program bu sayıların toplamı olan 19'u çıktı olarak üretir.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 25

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıdaki fonksiyonun amacı ne olabilir?
```c
int f (int n) {
int x = 0;
while (n>0) {
x += n%10;
n /= 10;
}
if (x%2 == 0) return 1;
else return 0;
}
```

Şıklar:
A) Verilen bir sayıyı çarpanlarına ayırmak | B) Verilen bir sayının üçe bölünüp bölünmediğini bulmak | C) Verilen bir sayının çift olup olmadığını bulmak | D) Verilen bir sayının sürekli 10'a bölünmesi ile kaç adımda 0'a ulaşılabileceğini bulmak | E) Verilen bir sayının basamakları toplamının çift sayı olup olmadığını bulmak

Cevap: E Verilen bir sayının basamakları toplamının çift sayı olup olmadığını bulmak

Çözüm:
Yukarıdaki fonksiyon, verilen bir tamsayının son basamağından başlayarak tek tek bütün basamaklarının toplamını x değişkeninde tutar. Fonksiyonun son adımında x sayısının çift olması durumunda fonksiyondan 1, tek olması durumunda da 0 döner. Yani basamakların toplamının çift mi tek mi olduğu durum bilgisini fonksiyonu çağırana döndürür. Yani
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 26

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıdaki programın bir sayının asal olup olmadığını doğru olarak belirleyebilmesi için boşluk bırakılan yere aşağıdakilerden hangisi gelmelidir? Not: Eğer sayı asal ise fonksiyonun 1, değil ise 0 dönmesini istiyoruz.
```c
int asal(int n) {
int i,m;
if (n<2) return 0;
m = (int)sqrt(n);
for (i=2;i<=m;i++)
_______________;
return 1;
}
```

Şıklar:
A) if (n/i==0) return 0; | B) if (n-(i*i))==0) return 0; | C) if (n%i==0) return 0; | D) if (n%i!=0) return 0; | E) if (n==0) return 0;

Cevap: C if (n%i==0) return 0;

Çözüm:
for döngüsü içinde eğer i sayısı n sayısını tam olarak bölüyorsa n sayısının asal olmadığını belirlemiş oluruz. Bunun için mod operatörü yani % ile n%i değerinin 0 olması durumunu kontrol edip i sayısı n sayısını tam olarak böldüğü durumda sayının asıl olmadığını bulup fonksiyondan 0 dönerek çıkmamız gerekir.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 27

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

[27-28 soruları için kullanılacak kod parçası]
27 ve 28 sorular için aşağıdaki kod parçasını göz önüne alınız.
```c
0: int sayac, toplam = 0;
1: for (sayac = 1; sayac <= 15; sayac++)
2: {
3: if (sayac%5 == 3)
4: toplam += sayac;
5:
6: else if (sayac%5 == 2)
7: toplam += sayac/2;
8:
9: else if (sayac%5 == 1)
10: sayac++;
11:
12: }
13: printf("%d", toplam);
```

---

Programın çıktısı aşağıdakilerden hangisidir?

Şıklar:
A) 11 | B) 22 | C) 24 | D) 32 | E) 34

Cevap: C 24

Çözüm:
Program ilk bakışta 1 ile 15 arasındaki sayılardan 5'e bölündüğünde 3 kalanını veren sayıların ve 2 kalanını veren sayıların yarısının toplamı olarak görülmektedir. Ancak for bloğunun sonundaki sayac++ ifadesi nedeniyle toplam += sayac/2 ifadesi hiçbir zaman çalışmayacaktır. Eğer 5'e bölümden kalan 1 ise, örneğin sayac 1'e eşit olduğu durumda, sayac bir defa Satır 10'da artırılacaktır, sayac değeri 2 olacaktır. For döngüsü tamamlandığı için Satır 1 içinde sayac değeri bir kez daha artırılacak, yani sayac değeri 3 olacak, bu nedenle de hiçbir zaman Satır 6'da yer alan kontrol ifadesi doğru olarak değerlendirilmeyecektir. Bu durumda program 1 ile 15 arasındaki sayılardan 5'e bölündiğünde 3 kalanını veren sayıların toplamını hesaplamaktadır. Bu sayılar 3, 8, ve 13'tür ve bu sayıların toplamı da 24'tür.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 28

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

[27-28 soruları için kullanılacak kod parçası]
```c
27 ve 28 sorular için aşağıdaki kod parçasını göz önüne alınız.
0: int sayac, toplam = 0;
1: for (sayac = 1; sayac <= 15; sayac++)
2: {
3: if (sayac%5 == 3)
4: toplam += sayac;
5:
6: else if (sayac%5 == 2)
7: toplam += sayac/2;
8:
9: else if (sayac%5 == 1)
10: sayac++;
11:
12: }
13: printf("%d", toplam);
```

---

Eğer “toplam” değeri değiştiğinde mevcut sayaç ve toplam değerlerini ekrana yazdırmak istiyorsak;
printf("%d\t%d\n", sayac, toplam);
ifadesini hangi satırlar arasına yerleştirebiliriz?

Şıklar:
A) 2 ile 3 arasına | B) 3 ile 4 arasına | C) 5. satıra | D) 8. satıra | E) 11. satıra

Cevap: E 11. satıra

Çözüm:
Satır 5 ve Satır 8'e eklenirse if-else bloğunu bozacağı için hata verecektir. A şıkkında henüz toplam değeri değişmemiş olacak, B şıkkında ise yine if-else bloğunu bozmuş olacağı için hata verecektir.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 29

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıdaki kod parçasına girdi olarak kaç girilmesi durumunda ekranda göreceğiniz en büyük sayı 210 olur?
```c
int j = 0, i = 0, n;
scanf("%d", &n);
while (j < n) {
printf("%d\n", j);
j += 10;
for (i = j; i < j + 10; i++)
printf("%d\n", i);
printf("%d\n", i + j);
}
```

Şıklar:
A) 50 | B) 70 | C) 80 | D) 100 | E) 120

Cevap: D 100

Çözüm:
En büyük sayıyı i+j'nin ekrana basıldığı satır basar. i'nin for döngüsünden çıkıldığında değeri j+10 olacağından n=100 girilirse ekranda maksimum 210 görülecektir.
Ortaokul Bilgisayar Olimpiyatı 2020, 1. Aşama, Soru 30

[21-30 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıdaki kod parçasının çıktısı nedir?
```c
int x = 2, y = 10;
if (1 && x<0)
printf("%d", x);
if (0 || x>=1)
printf("%d", --x);
else
printf("%d", x++);
if (++x+y < 11)
printf("%d", y);
else
printf("%d", x*y++);
```

Şıklar:
A) 010 | B) 120 | C) 2220 | D) 110 | E) 220

Cevap: D 110

Çözüm:
İlk if ifadesinin koşulu sağlanmaz. İkinci if ifadesinin koşulu sağlandığı için ekranda 1 basılacak, daha sonra son if ifadesinin koşulu da sağlanmadığı için ekrana 20 basılacaktır.
Ortaokul Bilgisayar Olimpiyatı 2021, 1. Aşama, Soru 1

Rüyanızda uzay mekiğinize binip aya gidiyorsunuz ve orada isimleri A, B ve C olan üç uzaylıyla tanışıyorsunuz. Tanıştığınız uzaylılardan bir tanesi Merkürlü, bir tanesi Venüslü ve bir tanesi de Marslıdır. Sabah uyandığınızda hangi uzaylının nereli olduğuna ilişkin sadece aşağıda verilenleri hatırlıyorsunuz.
 Eğer C Merkürlü ise B Venüslüdür.
 Eğer C Venüslü ise B Marslıdır.
 Eğer A Marslı ise C Venüslüdür.
 Eğer B Merkürlü değilse A Venüslüdür.
Hatırladıklarınızın ışığında hangi uzaylı nerelidir?

Şıklar:
A) A Merkürlü, B Marslı, C ise Venüslüdür. | B) A Marslı, B Merkürlü, C ise Venüslüdür. | C) A Venüslü, B Merkürlü, C ise Marslıdır. | D) A Venüslü, B Marslı, C ise Merkürlüdür. | E) Hatırladıklarınız kesin bir yargıya varmak için yetersizdir.

Cevap: C A Venüslü, B Merkürlü, C ise Marslıdır.

Çözüm:
C’nin Merkürlü olduğunu varsayalım. Bu durumda ilk önermeden dolayı B Venüslüdür. Her uzaylı ayrı bir gezegenden olduğuna göre A ise Marslıdır. Üçüncü önermeden dolayı A Marslı ise C’nin Venüslü olması gerekmekte idi. Öyleyse C Merkürlü değildir.
A’nın Merkürlü olduğunu varsayalım. Her uzaylı ayrı bir gezegenden olduğuna göre B Merkürlü değildir. Bu durumda dördüncü önermeden dolayı A’nın Venüslü olması gerekirdi. Öyleyse A Merkürlü değildir.
Hem C hem de A Merkürlü olmadığına göre B Merkürlüdür. B Marslı olmadığına göre ikinci önermeden dolayı C Venüslü değildir. C Merkürlü de olmadığına göre Marslıdır. Bu durumda A Venüslü olmalıdır. Bu eşleştirme hiçbir önermeyle çelişmediği için A Venüslü, B Merkürlü, C ise Marslıdıır.
Ortaokul Bilgisayar Olimpiyatı 2021, 1. Aşama, Soru 2

Bir ortaokuldaki 45 öğrenci Java, C ve Python programlama dillerinden en az birini bilmektedir. Öğrencilerden 36 tanesi Java, 12 tanesi C ve 18 tanesi ise Python bilmektedir. 4 öğrenci bu üç dili de bildiğine göre bu dillerden en az iki tanesini bilen kaç öğrenci vardır?

Şıklar:
A) 13 | B) 14 | C) 15 | D) 16 | E) 17

Cevap: E 17

Çözüm:
Sadece Java bilenlerin sayısını a, sadece C bilenlerin sayısını b, sadece Python bilenlerin sayısını c ile gösterelim. Sadece Java ve C bilenlerin sayısını d, sadece Java ve Python bilenlerin sayısını e, sadece C ve Python bilenlerin sayısını ise f ile gösterelim. Bizden istenen d + e + f + 4 ifadesinin değeridir.
Her üç dili de bilen 4 kişi olduğundan a + b + c + d + e + f = 41'dir. Java bilen 36 kişi ve her üç dili de bilen 4 kişi olduğundan a + d + e = 32'dir. C bilen 12 kişi ve her üç dili de bilen 4 kişi olduğuundan b + d + f = 8'dir. Python bilen 18 kişi ve her üç dili de bilen 4 kişi olduğunun e + f + c = 14'tür. Son üç denklemin toplamı bize a + b + c + 2 (d + e + f) = 54 denklemini verir. Bu denklemden ilk denklemin çıkartılmasıyla d + e + f = 13 eşitliği elde edilir. Bizden istenen d + e + f + 4 ifadesinin değeri olduğu için cevap 17'dir.
Ortaokul Bilgisayar Olimpiyatı 2021, 1. Aşama, Soru 3

1\(^{5003}\) + 3\(^{5003}\) + 5\(^{5003}\) + 7\(^{5003}\) + ... + 5\(^{0035003}\) sayısının birler basamağındaki rakam aşağıdakilerden hangisidir?

Şıklar:
A) 0 | B) 2 | C) 4 | D) 6 | E) 8

Cevap: E 8

Çözüm:
Her x tamsayısı için \(x^{5003}(mod\ 10) = (x + 10)^{5003}(mod\ 10)\) olduğu için verilen ifade daha sade şekilde \((500 \times (1^{5003} + 3^{5003} + 5^{5003} + 7^{5003} + 9^{5003}) + 1^{5003} + 3^{5003})(mod\ 10)\) olarak yazılabilir. 500 sayısı 10 ile bölünebildiği için bulmamız gereken \(1^{5003} + 3^{5003}(mod\ 10)\)'dur. \(1^{5003}(mod\ 10) = 1\) ve \(3^{5003}(mod\ 10) = 7\) olduğundan cevap 8'dir.
Ortaokul Bilgisayar Olimpiyatı 2021, 1. Aşama, Soru 4

Dedeniz, babanız, amcanız, siz, kardeşiniz ve amcanızın iki çocuğu olmak üzere toplam 7 kişisiniz. Hiç kimsenin babasından önce gelmemesi şartıyla kaç farklı şekilde sıralanabilirsiniz?

Şıklar:
A) 20 | B) 24 | C) 80 | D) 240 | E) 720

Cevap: C 80

Çözüm:
Kural gereği dedeniz en başta olmalıdır. Geri kalan 6 yerden babanız, siz ve kardeşiniz için 3 yer \(\frac{6!}{3! \times 3!}\) şekilde seçilebilir. Herbir seçimde kural gereği babanız en önde olacaktır ancak siz ve kardeşiniz 2! şekilde sıralanabilirsiniz. Geri kalan 3 yerde de amcanız en önde olacaktır ancak amca çocuklarınız kendi aralarında 2! Şekilde sıralanabilirler. Dolayısıyla cevap \(\frac{6!}{3! \times 3!} \times 2! \times 2! = 80'\)dir.
Ortaokul Bilgisayar Olimpiyatı 2021, 1. Aşama, Soru 6

[5-8 soruları için açıklama]
Ortaokul öğrencileri için düzenlenen bir yaz kampında öğrencilere spor öğretmenliği yapıyorsunuz. Spor programı kapsamında her öğrenci ilk olarak havuzda 10 tur yüzecek, sonrasında 5 km bisiklet sürecek, en son olarak da 2 km koşacaktır. Her öğrenci bu aktiviteleri verilen sırayla gerçekleştirecektir. Kampın güvenlik kuralları gereği aynı anda havuzda en fazla bir öğrenci bulunabilmektedir. Ancak aynı anda bisiklet sürebilecek ya da koşabilecek öğrenci sayısına ilişkin bir kısıt bulunmamaktadır. Havuzdan çıkan bir öğrenci hemen bisiklet sürmeye başlayacak ve aynı anda bir sonraki öğrenci yüzmeye başlayacaktır. Benzer şekilde bisiklet sürmesi biten öğrenci hemen koşmaya başlayacaktır.
Spor programı ilk öğrencinin havuza girmesiyle başlayıp koşusunu en son tamamlayan öğrencinin koşusunu tamamlamasıyla bitmektedir. Kamptaki n öğrencinin yüzme süreleri, bisiklet sürme süreleri ve koşma süreleri önceden bilinmektedir. Dikkat edilirse spor programının süresi öğrencilerin hangi sırayla havuza girdiklerine göre değişmektedir.
Örnek vermek gerekirse, \(n = 3\) öğrenci için yüzme süreleri, bisiklet sürme süreleri ve Koşma süreleri aşağıda verildiği gibi olsun.
<table><tr><td></td><td>Öğrenci 1</td><td>Öğrenci 2</td><td>Öğrenci 3</td></tr><tr><td>Yüzme süresi</td><td>3</td><td>6</td><td>8</td></tr><tr><td>Bisiklet süresi</td><td>4</td><td>8</td><td>6</td></tr><tr><td>Koşma süresi</td><td>6</td><td>4</td><td>5</td></tr></table>
Bu örnekte öğrenciler havuza 3, 1, 2 sırasıyla (ilk olarak 3. öğrenci, ardından 1. öğrenci ve son olarak da 2. öğrenci) girerlerse spor programı 29 birim zaman sürer. Ancak öğrenciler havuza 2, 3, 1 sırasıyla girerlerse spor programı 27 birim zaman sürmektedir.

---

Öğrencilerin yüzme, bisiklet ve koşma süreleri aşağıdaki tablodaki gibi olursa spor programı en az ne kadar sürede tamamlanabilir?
<table><tr><td></td><td>Öğrenci 1</td><td>Öğrenci 2</td><td>Öğrenci 3</td><td>Öğrenci 4</td><td>Öğrenci 5</td></tr><tr><td>Yüzme süresi</td><td>1</td><td>3</td><td>5</td><td>7</td><td>9</td></tr><tr><td>Bisiklet süresi</td><td>6</td><td>7</td><td>4</td><td>8</td><td>3</td></tr><tr><td>Koşma süresi</td><td>8</td><td>10</td><td>3</td><td>8</td><td>12</td></tr></table>

Şıklar:
A) 25 | B) 26 | C) 32 | D) 34 | E) 36

Cevap: D 34

Çözüm:
Bir önceki sorunun çözümünde ispatlandığı üzere öğrenciler havuza bisiklet ve koşma sürelerinin toplamına göre BİYÜKTEN KÜÇÜĞE OLACAK ŞEKİLDE GİRMELİLER. Bu durumda öğrencilerin sıralaması 2, 4, 5, 1, 3 olmalıdır. Öğrenciler bu sırayla havuza girerlerse öğrencilerin havuzdan çıktıkları zamanlar 3, 10, 19, 20 ve 25 olur. Her öğrenci havuzdan çıktıktan sonra sporunu bitirmek için bisiklet ve koşu sürelerinin toplamı kadar zaman harcayacaktır. Bu durumda 2. öğrenci 3 + 7 + 10 = 20 anında, 4. Öğrenci 10 + 8 + 8 = 26 anında, 5. Öğrenci 19 + 3 + 12 = 34 anında, 1. Öğrenci 20 + 6 + 8 = 34 anında ve 3. Öğrenci ise 25 + 4 + 3 = 32 anında sporunu tamamlayacaktır. Bu durumda spor programı toplam 34 birim sürede tamamlanmış olur.
Ortaokul Bilgisayar Olimpiyatı 2021, 1. Aşama, Soru 7

[5-8 soruları için açıklama]
Ortaokul öğrencileri için düzenlenen bir yaz kampında öğrencilere spor öğretmenliği yapıyorsunuz. Spor programı kapsamında her öğrenci ilk olarak havuzda 10 tur yüzecek, sonrasında 5 km bisiklet sürecek, en son olarak da 2 km koşacaktır. Her öğrenci bu aktiviteleri verilen sırayla gerçekleştirecektir. Kampın güvenlik kuralları gereği aynı anda havuzda en fazla bir öğrenci bulunabilmektedir. Ancak aynı anda bisiklet sürebilecek ya da koşabilecek öğrenci sayısına ilişkin bir kısıt bulunmamaktadır. Havuzdan çıkan bir öğrenci hemen bisiklet sürmeye başlayacak ve aynı anda bir sonraki öğrenci yüzmeye başlayacaktır. Benzer şekilde bisiklet sürmesi biten öğrenci hemen koşmaya başlayacaktır.
Spor programı ilk öğrencinin havuza girmesiyle başlayıp koşusunu en son tamamlayan öğrencinin koşusunu tamamlamasıyla bitmektedir. Kamptaki n öğrencinin yüzme süreleri, bisiklet sürme süreleri ve koşma süreleri önceden bilinmektedir. Dikkat edilirse spor programının süresi öğrencilerin hangi sırayla havuza girdiklerine göre değişmektedir.
Örnek vermek gerekirse, \(n = 3\) öğrenci için yüzme süreleri, bisiklet sürme süreleri ve Koşma süreleri aşağıda verildiği gibi olsun.
<table><tr><td></td><td>Öğrenci 1</td><td>Öğrenci 2</td><td>Öğrenci 3</td></tr><tr><td>Yüzme süresi</td><td>3</td><td>6</td><td>8</td></tr><tr><td>Bisiklet süresi</td><td>4</td><td>8</td><td>6</td></tr><tr><td>Koşma süresi</td><td>6</td><td>4</td><td>5</td></tr></table>
Bu örnekte öğrenciler havuza 3, 1, 2 sırasıyla (ilk olarak 3. öğrenci, ardından 1. öğrenci ve son olarak da 2. öğrenci) girerlerse spor programı 29 birim zaman sürer. Ancak öğrenciler havuza 2, 3, 1 sırasıyla girerlerse spor programı 27 birim zaman sürmektedir.

---

Öğrencilerin yüzme, bisiklet ve koşma süreleri aşağıdaki tablodaki gibi olursa spor programı en az ne kadar sürede tamamlanabilir?
<table><tr><td></td><td>Öğrenci 1</td><td>Öğrenci 2</td><td>Öğrenci 3</td><td>Öğrenci 4</td><td>Öğrenci 5</td></tr><tr><td>Yüzme süresi</td><td>8</td><td>10</td><td>3</td><td>8</td><td>10</td></tr><tr><td>Bisiklet süresi</td><td>6</td><td>7</td><td>4</td><td>8</td><td>3</td></tr><tr><td>Koşma süresi</td><td>1</td><td>3</td><td>5</td><td>7</td><td>9</td></tr></table>

Şıklar:
A) 39 | B) 40 | C) 42 | D) 44 | E) 46

Cevap: E 46

Çözüm:
Öğrenciler havuza bisiklet ve koşma sürelerinin toplamına göre büyükten küçüğe olacak şekilde girmeliler. Bu durumda öğrencilerin sıralaması 4, 5, 2, 3, 1 olmalıdır. Öğrenciler bu sırayla havuza girerlerse öğrencilerin havuzdan çıktıkları zamanlar 8, 18, 28, 31 ve 39 olur. Her öğrenci havuzdan çıktıktan sonra sporunu bitirmek için bisiklet ve koşu sürelerinin toplamı kadar zaman harcayacaktır. Bu durumda 4. öğrenci 8 + 8 + 7 = 23 anında, 5. Öğrenci 18 + 3 + 9 = 30 anında, 2. Öğrenci 28 + 7 + 3 = 38 anında, 3. Öğrenci 31 + 4 + 5 = 40 anında ve 1. Öğrenci ise 39 + 6 + 1 = 46 anında sporunu tamamlayacaktır. Bu durumda spor programı toplam 46 birim sürede tamamlanmış olur.