206. Turist

 

John okulunda öğrencilerin yapacağı bir turist toplantısına katılacaktır. John kendi sınıfında çadırlardan sorumlu seçilmiştir.  John evde 3 adet çadır buluyor: birinci çadır a1 kilogram ağırlığındadır ve içine b1 kişi sığmaktadır, ikinci çadırın ağırlığı a2 kilogramdır içine b2 kişi sığmaktadır, üçüncünün ağırlığı a3 kilogramdır ve içine b3 kişi sığmaktadır.

John’un sınıfında k öğrenci vardır. John’un içine herkesi sığdıracak şekilde çadırları seçip seçemeyeceğini bulunuz. Seçilecek çadırların toplam ağırlığının w kilogramı geçmemesi koşuluna da dikkat ediniz.

 

Girdi. İlk satırda 2 tamsayı vardır: k ve w (1 ≤ k ≤ 15, 1 ≤ w ≤ 30). İkinci satırda 6 tamsayı vardır: a1, b1, a2, b2, a3, b3 (1 ≤ a1, a2, a3 ≤ 10, 1 ≤ b1, b2, b3 ≤ 15).

 

Çıktı. Eğer istenen şekilde çadırları seçmek mümkünse YES, mümkün değilse NO yazdırın.

 

Örnek girdi

10 10

5 5 6 6 4 5

 

Örnek çıktı

YES

 

 

ÇÖZÜM

Basit problem – koşullu cümle

 

Algoritma analizi

Yalnızca 3 çadır olduğu için öğrencilerin çadırlara yerleştirilmesinin bütün alternatiflerini denemek mümkündür. Bütün yerleştirme alternatifleri şunlardır:

·        yalnızca birinci çadıra;

·        yalnızca ikinci çadıra;

·        yalnızca üçüncü çadıra;

·        yalnızca birinci ve ikinci çadıra;

·        yalnızca birinci ve üçüncü çadıra;

·        yalnızca ikinci ve üçüncü çadıra;

·        üç çadırın hepsine.

Bu alternatiflerin tümünü 7 koşullu cümle ile denemek mümkündür. Flag adıyla bir değişken tanımlayın ve ilk değer olarak 0 verin (öğrencilerin tamamını eldeki 3 çadıra sığdırmak mümkün değildir). Daha sonra mümkün olan yedi yerleştirmenin hepsini deneyin.

Örnek olarak, bütün öğrencilerin yalnızca ikinci çadıra yerleştirilme koşulu şöyledir:

if ((b2 >= k) && (a2 <= w)) flag = 1;

Bütün öğrencilerin yalnızca birinci ve üçüncü çadırlara yerleştirilme koşulu şöyledir::

if ((b1 + b3 >= k) && (a1 + a3 <= w)) flag = 1;

flag değişkenine bağlı olarak yedi koşulun hepsini denedikten sonra cevabı yazdırın.

 

Algoritma gerçekleştirme

Öğrencilerin çadırlara mümkün olan bütün yerleştirme yöntemlerini araştırın.

 

scanf("%d %d",&k,&w);

scanf("%d %d %d %d %d %d",&a1,&b1,&a2,&b2,&a3,&b3);

if ((b1 >= k) && (a1 <= w)) flag = 1;

if ((b2 >= k) && (a2 <= w)) flag = 1;

if ((b3 >= k) && (a3 <= w)) flag = 1;

if ((b1 + b2 >= k) && (a1 + a2 <= w)) flag = 1;

if ((b1 + b3 >= k) && (a1 + a3 <= w)) flag = 1;

if ((b2 + b3 >= k) && (a2 + a3 <= w)) flag = 1;

if ((b1 + b2 + b3 >= k) && (a1 + a2 + a3 <= w)) flag = 1;

if (flag) printf("YES\n"); else printf("NO\n");