alpsahin/tubitak-olimpiyat-dataset-v2 huggingface dataset:
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 38

[36-50 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 çıktısı nedir?
```c
int main(){
int A[8], j, k, n = 0;
for (j=0; j < 8; j++)
A[j] = 8– j;
for (j=0; j < 8; j++)
for (k=0; k <= j; k++)
n += A[k];
printf("%d\n", n);
}
```

Şıklar:
A) 36
B) 72
C) 96
D) 120
E) 204

Cevap: E 204

Çözüm:
İlk for döngüsü ile A dizisi {8, 7, 6, 5, 4, 3, 2, 1} değerleriyle doldurmuştur. Başlangıçta n
değişkenine 0 atanmıştır, sonrasındaki iç içe döngülerde n’in değeri eklemelerle
güncellenmektedir, yani n güncellenmekte olan bir toplamı ifade etmektedir. Dıştaki
döngü değişkeni j, 0 ve 7 arasındaki değerleri alır. Bu 8 farklı j değerinin her biri için iç
döngü değişkeni k 0 değerini alınca k<=j olup içteki döngüye girileceği için A[0]=8 değeri
bu toplama 8 defa eklenir. Benzer şekilde 1 ve 8 arasındaki 7 farklı j değeri için, k=1 <= j
olup için içteki döngüye girileceği için A[1]=7 değeri toplama 7 defa eklenir. Benzer
şekilde A[2]=6 değeri 6 defa, A[3]=5 değeri 5 defa eklenerek bu örüntü devam eder. j=7
ve k=7 olduğunda ise A[7]=1 değeri toplama 1 defa eklenir. Bu durumda n’nin son değeri
8^2+7^2+…+1^2 = 204 olur.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 39

[36-50 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 çıktısı nedir?
```c
void f(int a, int b, int *c) {
int *t = &b;
a-= 2;
b += 5;
*t += 2;
*c += 100;
}
int main() {
int x = 6, y = 30, z = 60;
f(x, y, &z);
printf("%d, %d, %d\n", x, y, z);
}
```

Şıklar:
A) 6, 30, 60
B) 6, 30, 160
C) 4, 35, 160
D) 4, 37, 160
E) 4, 30, 60

Cevap: B B

Çözüm:
f fonksiyonu x ve y’nin değerlerini değiştirmez, x ve y sırasıyla ilk değerleri olan 6 ve 30
olarak kalırlar. Fonksiyonun c parametresi p’nin değeri atanır, p ise z’nin adresini
içermektedir. Fonksiyon içinde z’ye c işaretçisi ile erişilerek z’nin değeri 100 artar. Bu
durumda z’nin değeri 160 olur.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 40

[36-50 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.

---

B dizisi [1,-4, 3, 4,-2, 6,-5, 2]değerlerini içeren 8 elemanlı bir dizi
olsun. Aşağıdaki mysteryf onksiyonu, mystery(B,0,7) şeklinde çağrılırsa hangi
değeri döner?
```c
int mystery(int A[],int l, int h){
if (h == l)
return A[l];
else {
int m = (l + h)/2;
int left = mystery(A, l, m);
int right = mystery(A, m+1, h);
int X = f(A, l, m, h);
if ( left >= right && left >= X )
return left;
else if ( right >= left && right >= X)
return right;
else
return X;
}
}
int f(int A[], int l, int m, int h) {
int SL =-10000, SR =-10000;
int t = 0, i, j;
for (i = m; i >= l; i--) {
t = t + A[i];
if (t > SL) {
SL = t;
}
}
t = 0;
for (j = m+1; j <= h; j++) {
t = t + A[j];
if (t > SR) {
SR = t;
}
}
return SL + SR;
}
```

Şıklar:
A)11
B)12
C)7
D)-4
E)0

Cevap: A 11

Çözüm:
Verilen mystery fonksiyonu verilen dizideki en büyük ardışık sayılar toplamını hesaplayan
özyinelemeli bir fonksiyondur. İlk olarak mystery fonksiyonu dizinin ortasındaki indis olan
m’yi hesaplar. Özyinelemeli olarak dizinin ilk yarısındaki (l ve m indeksleri arası elemanları
içeren) en büyük ardışık sayı toplamını hesaplar ve bu değeri left değişkenine atar. Sonra
yine özyinemeli olarak dizinin ikinci yarısındaki (m+1 ve h indeksleri arası) en büyük
ardışık sayı toplamını hesaplar ve bu değeri right değişkenine atar. Dizinin bütünündeki
maksimum ardışık sayı toplamını veren alt dizi tamamen ilk yarı veya tamamen ikinci
yarıda olabileceği gibi, bir kısmı ilk yarı bir kısmı ikinci yarıda da olabilir. f fonksiyonu bir
kısmı ilk yarıda, bir kısmı ikinci yarıda olan en büyük ardışık sayı toplamını hesaplamak için
şu basamakları izler: ilk olarak m indeksinden sola doğru giderek ilk yarıda bulunan ve m
indisindeki elemanı içeren maksimum ardışık toplamı bulur, bunu SL değişkeninde tutar;
daha sonra aynı şekilde m indeksinden sağa doğru giderek ikinci yarıda bulunan ve m+1
indisindeki elemanı içeren maksimum ardışık toplamı bulur, bunu SR değişkeninde tutar.
SL ve SR’nın toplamı m ve m+1 indislerindeki elemanların her ikisini de içeren en büyük
ardışık sayı toplamını verir, f fonksiyonu bu değeri döner. mystery fonksiyonu f
fonksiyonunun döndüğü değeri X değişkenine atar. Sonra X, left ve right değişkenlerinin
değerleri arasındaki maksimumu bulur, bu dizideki en büyük ardışık sayılar toplamıdır. B
dizisinde toplamı maksimum olan ardışık sayılar dizisi 3, 4,-2 ve 6 olup, toplamları 11’dir.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 41

[36-50 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 çıktısının sağdaki gibi olması için boş bırakılan yeren hangisi
gelmelidir?

     999999999
    98888888889
  998877777778899
  987766666667789
 98776555555567789
9887655444445567889
9876554333334556789
9876543222223456789
9876543211123456789
9876543210123456789
9876543211123456789
9876543222223456789
9876554333334556789
9887655444445567889
 98776555555567789
  987766666667789
  998877777778899
    98888888889
     999999999

```c
int n = 21;
int c = n / 2;
for (int y=0; y<n; y++) {
int ys = (y- c)*(y- c);
for (int x=0; x<n; x++) {
int xs = (x- c)*(x- c);
int d = ________________________;
if (d < c)
printf("%d", d);
else
printf(" ");
}
printf("\n");
}
```

Şıklar:
A) xs + ys
B)(xs + ys) / c
C) abs(xs) + abs(ys)
D)(int)sqrt(xs + ys)
E)(int)sqrt(xs) + (int)sqrt(ys)

Cevap: D (int)sqrt(xs + ys)

Çözüm:
d değişkenin merkeze olan Öklid uzaklığı göstermesi gerekir. Bu işlem ise sağdaki şekle
uygun olarak D şıkkında yapılmaktadır. Doğru cevap D şıkkıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 42

[36-50 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 n (26) bilyeyi m (5) kutuya kutularda sırasıyla 5,5,5,5 ve 6 bilye
olacak şekilde dağıtması için boş yere ne gelmelidir?
```c
int n = 26;
int m = 5;
for (int i=0; i<m; i++) {
int k = __________________;
printf("%d ", k);
n-= k;
}
```

Şıklar:
A) n / m
B) n / (m + 1)
C) n / (m– 1)
D) (n- i) / (m- i)
E) n / (m- i)

Cevap: E n / (m- i)

Çözüm:
n değişkeni döngü içinde her iterasyonda k kadar azaltılmaktadır. Bu durumda k
değişkeninin o iterasyon için tam sayı bölmede ortalama kutu başına düşen bilyeyi
göstermesi gerekir. Yani cevap E şıkkıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 43

[36-50 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 fonksiyon foo(10); ile çağrılırsa hangi değeri döner?
```c
int foo(int n) {
if (n != 0)
if (n%2==0)
return n + foo(n-1);
else
return n- foo(n-1);
else
return n;
}
```

Şıklar:
A) 0
B) 10
C) 11
D) 15
E) Hiçbiri

Cevap: C 11

Çözüm:
Fonksiyon her seferinde n değerini 1 azaltmaktadır. Eğer n çift ise n + foo (n-1) dönmekte,
tek ise n + foo (n-1) dönmektedir. 10’dan itibaren sırayla fonksiyon çalıştırıldığında 11
sonucu elde edilir. Cevap C şıkkıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 44

[36-50 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ı için şıklarda verilen ifadelerden hangisi Yanlıştır?
```c
const int n = 5;
int p[] = {10, 2, 15, 1, 5};
//Bölüm1
for (int i=0; i<n; i++)
printf("%3d ", p[i]);
printf("\n");
//Bölüm2
int s[n];
for (int i=0; i<n; i++) {
s[i] = 0;
p[i] += (i > 0 ? p[i-1] : 0);
}
//Bölüm3
int c = 100000;
for (int k=0; k<c; k++) {
int r = rand() % p[n-1];
for (int i=0; i<n; i++) {
if (p[i] > r) {
s[i]++;
break;
}
}
}
//Bölüm4
double scaler = (double)c / p[n-1];
for (int i=0; i<n; i++) {
s[i] = (int)(s[i] / scaler + 0.5);
printf("%3d ", s[i]);
}
```

Şıklar:
A) Bölüm 1’deki for döngüsü p dizisinin içindeki elemanları ekrana yazar
B) Bölüm 2’de s dizisinin içi sıfırlanır ve p dizisi kümülatif artan hale getirilir
C) Bölüm 3’te p dizisinin orijinal halindeki sayıların büyüklüğüne uygun olarak rastgele sayılar atılır ve s dizisinde atılan sayı indeksi bir arttırılır (örneğin en büyük 15 olduğu için rastgele atılan sayı en çok 2, en küçük 1 olduğu için rastgele sayı en az 3 olur)
D) Bölüm 4’te s dizisindeki sayılar bir sabit sayıya göre normalize edilir ve ekrana yazılır
E) Bölüm 4’te ekrana yazılan çıktı ile Bölüm 1’de ekrana yazılan çıktı çok büyük olasılıkla aynıdır

Cevap: D Bölüm 4’te s dizisindeki sayılar bir sabit sayıya göre normalize edilir ve ekrana yazılır

Çözüm:
Bölüm’4 te s dizisindeki sayılar p dizisinin orijinal halinin toplamına (yani mevcut halinde
en son elemanına) bölünerek normalize edilir, sabit bir sayıya göre değil. Yani cevap D
şıkkıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 45

[36-50 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ının ilk satırda verilen x tam sayısının asal çarpanlarına ayırması
ve asal çarpanları aralarında * olacak şekilde ekrana yazması için ________ ile belirtilen
yere hangi ifade gelmelidir?
```c
int x = 150;
int p = 2;
int n = x;
while (n > 1) {
if (n % p == 0) {
n /= p;
printf("%d %c ", p, (n > 1 ? '*' : '='));
}
else
p++;
}
printf("%d \n", x);
```

Şıklar:
A) n /= p;
B) n += p;
C) n *= p;
D) p--;
E) n /= 2;

Cevap: A n /= p;

Çözüm:
while döndüsünde eğer n’nin p’ye bölümü 0 ise n, p’ye bölünerek azaltılmalıdır. Yani boş
olan yere n /= p;ifadesi gelmelidir.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 46

[36-50 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.

---

 FAA
+ CB
----
 CCC
Yukarda verilen matematiksel ifadede FAA üç basamaklı bir sayıyı, CB iki basamaklı bir
sayıyı ve CCC üç basamaklı bir sayıyı göstermektedir. Sayılar onluk sayı sistemindedir. F
değeri 4 olarak verilmiştir. A, B, C ve F rakamları birbirinden farklıdır. Aşağıda verilen
program parçacığı iç içe döngüler kullanarak A, B ve C değerlerini bulmaktadır. Verilen
program parçacığında eksik kısma şıklarda verilen ifadelerden hangisi gelmelidir ?
```c
for (int A=0; A<=9; A++) {
for (int B=0; B<=9; B++) {
if (A != 1 && B != 1 && A != B) {
int s = A + B;
int C = s % 10;
if (C > 0 && A != C && B != C) {
int r = A + C + (s / 10);
if (___________________________________) {
printf("A=%d, B=%d, C=%d", A, B, C);
return 0;
}
}
}
}
}
```

Şıklar:
A) F + (r / 10) == C
B) r % 10 == C && F == C
C) r / 10 == C && F == C
D) r % 10 == C && F + (r / 10) == C
E) r / 10 == C && F + (r % 10) == C

Cevap: D r değişkeni elde değer yani s / 10 ve A ve C değerlerinin toplamına eşittir. r % 10 değeri
CCC’nin ortasındaki değişken olan C’ye eşit olmalıdır. F ve r değişkeninden gelen elde
rakam olan r / 10 toplamı da CCC’nin en solunda olan C’ye eşit olmalıdır.

Çözüm:
r değişkeni elde değer yani s / 10 ve A ve C değerlerinin toplamına eşittir. r % 10 değeri
CCC’nin ortasındaki değişken olan C’ye eşit olmalıdır. F ve r değişkeninden gelen elde
rakam olan r / 10 toplamı da CCC’nin en solunda olan C’ye eşit olmalıdır. Doğru cevap D
şıkkıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 47

[36-50 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.

---

goster(4, K);çıktı olarak,----|---- *--|-- *-|- *-|- *--|-- *-|- *-|- *üretiyoriseK
değeri ne olmalıdır?
```c
void goster(int s, int K) {
if (s > 0) {
for (int i=0; i<=K*s; i++) {
printf("%c", i == s ? '|' : '-');
}
printf(" * ");
for (int k=0; k < K; k++)
goster(s / 2, K);
}
}
```

Şıklar:
A) 1
B) 2
C) 3
D) 4
E) 5

Cevap: B 2

Çözüm:
Verilen problemde her bir dallanmada çıktının yarısından 2 adet basılmaktadır. Bu
durumda dallanma faktörü 2 olduğu için K = 2 olmalıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 48

[36-50 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 çalıştırıldığında index değişkeninin değeri ne olurve while döngüsü kaç defa döner?
```c
int metot(int arr[], int n) {
int a = 0;
int b = n-1;
while (a < b) {
int m = (a + b) / 2;
int lv = m > 0 ? arr[m-1] : INT_MIN;
int rv = m < n-1 ? arr[m + 1] : INT_MIN;
int mv = arr[m];
if (mv > lv && mv > rv) return m;
if (lv > rv)
b = m;
else
a = m;
}
return a;
}
const int n = 11;
int arr[] = {1, 1, 3, 4, 8, 11, 19, 23, 16, 7, 2};
int index = metot(arr, n);
```

Şıklar:
A) index=5 döngüadedi=1
B) index=6 döngüadedi=1
C) index=6 döngüadedi=2
D) index=7 döngüadedi=2
E) index=7 döngüadedi=3

Cevap: D index=7 döngüadedi=2

Çözüm:
Yöntem en yüksek değeri dizide 7n umaralı indekste 2 döngü çevrimine bulur.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 49

[36-50 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.

---

str içinde sadece alfabetik karakterler ve boşluk sembolleri var ise, aşağıda verilen metot
ne iş yapar?
Not: str null-terminated (sonu ‘\0’) ile biten bir alfasayısal ifadedir.
```c
void metot(char *str) {
int index = 0;
bool flag = false;
while (str[index] != '\0') {
if (str[index] == ' ') {
if (flag && str[index + 1] != ' ' && str[index + 1] != '\0') {
printf("%c", str[index]);
}
}
else {
printf("%c", str[index]);
flag = true;
}
index++;
}
}
```

Şıklar:
A) str içerisindeki tüm boşluklar olmaksızın konsola yazar
B) str içerisindeki en baştaki gereksiz boşluklar olmaksızın konsola yazar
C) str içerisindeki en sondaki gereksiz boşluklar olmaksızın konsola yazar
D) str içerisindeki en baştaki gereksiz boşluklar olmaksızın konsola yazar
E) str içerisinde gereksiz boşluklar olmaksızın (başta ve sonda boşluk yok, kelime aralarında tek boşluk var) konsola yazar

Cevap: E str içerisinde gereksiz boşluklar olmaksızın (başta ve sonda boşluk yok, kelime aralarında tek boşluk var) konsola yazar

Çözüm:
Kod birden fazla boşlukları kontrol ederek tek boşluk yazılmasını sağlar. Ayrıca str’nin
başındaki ve sonundaki boşlukları da es geçer yani yazdırmaz. Yani cevap E şıkkıdır.
Bilgisayar Olimpiyatı 2023, 1. Aşama, Soru 50

[36-50 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
char* str = "tubitak olimpiyatlarinda basarili olmak cok guzeldi";
printf("%d \n", metot(str));
```

Aşağıdaki metot tanımını gözönüne alın. str içinde yukarıda görüldüğü gibi sadece
alfabetik karakterler ve boşluk sembolleri olduğunda, yukarıdaki program parçasının çıkısı
nedir?
Not: str null-terminated (sonu ‘\0’) ile biten bir alfasayısal ifadedir.
Not: str göstergeci her arttırıldığında dizideki bir sonraki elemanı göstermeye başlar

```c
int metot(char *str) {
int c = 0;
bool flag = false;
while (*str != '\0') {
if (*str == ' ') {
if (flag && *(str + 1) != ' ' && *(str + 1) != '\0')
c++;
}
else {
if (!flag) c++;
flag = true;
}
str++;
}
return c;
}
A) 
```

Şıklar:
A) 5
B) 6
C) 7
D) 8
E) 9

Cevap: B 6

Çözüm:
metod str içinde kaç kelime olduğu sayar. Verilen str dizisinde 6 kelime vardır. Yani cevap B
şıkkıdır.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 1

[Soru 1-2 için açıklama]
Bir denetleme şirketi, **F**, **G**, **H**, **J**, **K**, **L** ve **M** olarak adlandırılan yedi binayı denetleyecektir. Şirket, bu iş için toplam iki denetçi görevlendirecektir ve her denetçi bir grup binayı inceleyecektir. Binalar aşağıdaki koşullara göre **grup 1** ve **grup 2** olarak iki gruba ayrılacaktır:
* Her grup en az **üç** bina içermelidir.
* Hiçbir bina her iki grupta da olamaz.
* **F**, **M** ile aynı grupta olmalıdır.
* Eğer **H** **grup 1**'de ise, **L** **grup 1**'de olmalıdır.
* Eğer **J** **grup 2**'de ise, **G** **grup 1**'de olmalıdır.

---

Eğer G ve L grup 2’de iseler, aşağıdakilerden hangileri aynı grupta olmalıdır?

Şıklar:
A) F ve H | B) F ve K | C) H ve J | D) H ve K | E) J ve M

Cevap: E J ve M

Çözüm:
L grup 2’de olduğu için H grup 1’de değildir, grup 2’dedir. G grup 2’de olduğu için J grup 2’de değildir, grup 1’dedir. G, L ve H grup 2’de olduğundan ve her grubun en az üç bina içermesi ve F ve M’nin aynı grupta olma koşullarından dolayı, F ve M grup 1’de olmalıdır.  Bu durumda F, M ve J grup 1’dedir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 2

[Soru 1-2 için açıklama]
Bir denetleme şirketi, **F**, **G**, **H**, **J**, **K**, **L** ve **M** olarak adlandırılan yedi binayı denetleyecektir. Şirket, bu iş için toplam iki denetçi görevlendirecektir ve her denetçi bir grup binayı inceleyecektir. Binalar aşağıdaki koşullara göre **grup 1** ve **grup 2** olarak iki gruba ayrılacaktır:
* Her grup en az **üç** bina içermelidir.
* Hiçbir bina her iki grupta da olamaz.
* **F**, **M** ile aynı grupta olmalıdır.
* Eğer **H** **grup 1**'de ise, **L** **grup 1**'de olmalıdır.
* Eğer **J** **grup 2**'de ise, **G** **grup 1**'de olmalıdır.

---

Aşağıdakilerden hangisi doğru olamaz?

Şıklar:
A) F ve H grup 2’dedir. | B) G ve J grup 1’dedir. | C) L ve M grup 1’dedir. | D) F, K ve L grup 1’dedir. | E) J, K ve H grup 2’dedir.

Cevap: D F, K ve L grup 1’dedir.

Çözüm:
D şıkkına göre F grup 1’de ise M de grup 1’de olmalıdır. Bu durumda her grupta en az üç bina olma koşulundan dolayı H, G ve J grup 2’de olmalıdır. Fakat bu gruplama, J grup 2’de ise G grup 1’de olmalıdır koşulu ile çelişir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 3

[Soru 3-5 için açıklama]
Bir laboratuvarda gerçekleştirilmek üzere H, J, K, L, M, O, P ve S olarak adlandırılan sekiz basamaktan
oluşan bir deney tasarlanmıştır. Deneyin yapılması için üç gün ayrılmıştır. Her bir basamak ya öğleden önce
9:00-12:00 arası, ya da öğleden sonra 13:00-16:00 arası gerçekleştirilecek ve her bir basamağın
tamamlanması tam 3 saat sürecektir. Herhangi bir öğleden önce en fazla 2 basamak gerçekleştirilebilir. Aynı
şekilde, herhangi bir öğleden sonra en fazla 2 basamak gerçekleştirilebilir. Ek olarak aşağıdaki kısıtlara
uyulmalıdır:
● J deneyin 2. Gününde gerçekleştirilmelidir.
● Pöğleden önce gerçekleştirilmelidir.
● KveMaynızamandiliminde gerçekleştirilmelidir.
● Jbasamağı, M tamamlandıktan sonraki ve O tamamlandıktan sonraki bir zaman diliminde
gerçekleştirilmelidir.
● Obasamağı, P başlamadan önceki ve S başlamadan önceki bir zaman diliminde tamamlanmalıdır.

---

P en erken hangi zaman diliminde gerçekleştirilebilir?

Şıklar:
A) 1. Gün öğleden önce | B) 1. Gün öğleden sonra | C) 2. Gün öğleden önce | D) 2. Gün öğleden sonra | E) 3. Gün öğleden önce

Cevap: C 2. Gün öğleden önce

Çözüm:
P’nin öğleden önce gerçekleştirilmesi ve O basamağının, P başlamadan önceki bir zaman diliminde tamamlanması gerektiğinden, P en erken 2. Gün öğleden önce gerçekleştirilebilir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 4

[Soru 3-5 için açıklama]
Bir laboratuvarda gerçekleştirilmek üzere H, J, K, L, M, O, P ve S olarak adlandırılan sekiz basamaktan
oluşan bir deney tasarlanmıştır. Deneyin yapılması için üç gün ayrılmıştır. Her bir basamak ya öğleden önce
9:00-12:00 arası, ya da öğleden sonra 13:00-16:00 arası gerçekleştirilecek ve her bir basamağın
tamamlanması tam 3 saat sürecektir. Herhangi bir öğleden önce en fazla 2 basamak gerçekleştirilebilir. Aynı
şekilde, herhangi bir öğleden sonra en fazla 2 basamak gerçekleştirilebilir. Ek olarak aşağıdaki kısıtlara
uyulmalıdır:
● J deneyin 2. Gününde gerçekleştirilmelidir.
● Pöğleden önce gerçekleştirilmelidir.
● KveMaynızamandiliminde gerçekleştirilmelidir.
● Jbasamağı, M tamamlandıktan sonraki ve O tamamlandıktan sonraki bir zaman diliminde
gerçekleştirilmelidir.
● Obasamağı, P başlamadan önceki ve S başlamadan önceki bir zaman diliminde tamamlanmalıdır.

---

Eğer J öğleden önce gerçekleştirildiyse, aşağıdakilerden hangisi 1. Günde gerçekleştirilmiş olmalıdır?

Şıklar:
A) H | B) K | C) L | D) P | E) S

Cevap: B K

Çözüm:
J’nin 2. Gün öğleden önce gerçekleştirildiyse, M ve O 1. Gün tamamlanmış olmalıdır. K ve M’nin aynı zaman diliminde gerçekleştirilmesi gerektiğinden, K da 1. Gün tamamlanmış olmalıdır.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 5

[Soru 3-5 için açıklama]
Bir laboratuvarda gerçekleştirilmek üzere H, J, K, L, M, O, P ve S olarak adlandırılan sekiz basamaktan
oluşan bir deney tasarlanmıştır. Deneyin yapılması için üç gün ayrılmıştır. Her bir basamak ya öğleden önce
9:00-12:00 arası, ya da öğleden sonra 13:00-16:00 arası gerçekleştirilecek ve her bir basamağın
tamamlanması tam 3 saat sürecektir. Herhangi bir öğleden önce en fazla 2 basamak gerçekleştirilebilir. Aynı
şekilde, herhangi bir öğleden sonra en fazla 2 basamak gerçekleştirilebilir. Ek olarak aşağıdaki kısıtlara
uyulmalıdır:
● J deneyin 2. Gününde gerçekleştirilmelidir.
● Pöğleden önce gerçekleştirilmelidir.
● KveMaynızamandiliminde gerçekleştirilmelidir.
● Jbasamağı, M tamamlandıktan sonraki ve O tamamlandıktan sonraki bir zaman diliminde
gerçekleştirilmelidir.
● Obasamağı, P başlamadan önceki ve S başlamadan önceki bir zaman diliminde tamamlanmalıdır.

---

Eğer H ve L basamaklarının her ikisi de 1. Günde gerçekleştirildiyse, aşağıdakilerden hangisi 3. Günde gerçekleştirilmiş olmalıdır?

Şıklar:
A) K | B) M | C) O | D) P | E) S

Cevap: D P

Çözüm:
H ve L, 1. Günde gerçekleştirildiyse, J'nin 2. Günde gerçekleşme koşulunu ve J'den önce M, K, ve O'nun tamamlanma koşullarını sağlamak için iki seçenek olabilir: (i) K ve M, 1. Günde, O ise 2. Gün öğleden önce (ii) O, 1. Günde, K ve M ise 2. Gün öğleden önce gerçekleştirilmelidir. Her iki durumda da J, 2. Gün öğleden sonra yapılacaktır. S de J ile birlikte 2. Gün öğleden sonra yapılabilir. P'nin, O tamamlandıktan sonra ve bir öğleden önce gerçekleştirilmesi gerektiğinden, P ancak 3. Gün öğleden önce gerçekleştirilebilir. Bu durumda