latihan soal c part 1 untuk mengasah logika coding kita harus banyak latihan dengan soal-soal maka saya coba mengerjakan soal dari online judge untuk mengasah logika untuk coding soalnya seperti berikut :
Indonesia memiliki cukup banyak pemain bulutangkis yang handal dan setiap tahunnya PBSI selalu merekrut dan membina puluhan ribu bibit muda dari seluruh nusantara. Saat ini terdapat N peserta putra dan M peserta putri yang sedang mengikuti pelatihan dasar bulutangkis yang diselenggarakan PBSI. Setiap peserta pelatihan sudah dinilai kemampuannya oleh pelatih dengan setiap nilai (rating) berada pada rentang 1 hingga 100.000. Untuk mengukur kemajuan pelatihan ini, sang pelatih ingin mengetahui ada berapa banyak cara membentuk sebuah tim yang terdiri dari 1 putra dan 1 putri (ganda campuran) sedemikian sehingga jumlah rating mereka setidaknya sebesar K.
Contoh, diberikan data:
5 peserta putra:
- Andi, dengan rating 100.
- Budi, dengan rating 105.
- Chandra, dengan rating 450.
- Dedi, dengan rating 700.
- Eko, dengan rating 1025.
3 peserta putri:
- Lili, dengan rating 400.
- Maya, dengan rating 500.
- Nina, dengan rating 500.
dan K = 1200.
Dari data di atas, dapat disimpulkan ada 5 cara untuk membentuk tim dengan jumlah rating minimal 1200, yaitu:
- Dedi dengan Maya (700 + 500 = 1200).
- Dedi dengan Nina (700 + 500 = 1200).
- Eko dengan Lili (1025 + 400 = 1425).
- Eko dengan Maya (1025 + 500 = 1525).
- Eko dengan Nina (1025 + 500 = 1525).
Diberikan data rating N putra dan M putri yang masing-masing sudah terurut, buat program untuk menentukan ada berapa cara membentuk sebuah tim yang terdiri dari 1 putra dan 1 putri sedemikian sehingga jumlah rating mereka setidaknya sebesar K.
Input
Baris pertama berisi sebuah bilangan bulat T (T ≤ 20) yang menyatakan jumlah kasus. Setiap kasus dimulai dengan tiga bilangan bulat N, M dan K (1 ≤ N, M ≤ 40.000; 1 ≤ K ≤ 100.000) yang menyatakan banyaknya peserta putra, peserta putri, dan jumlah rating minimal yang diharapkan secara berurutan. Baris kedua berisi N buah bilangan bulat Ai (1 ≤ Ai ≤ 100.000; i=1..N) dengan Ai – 1 ≤ Ai untuk i=2..Nyang merepresentasikan rating semua peserta putra. Baris ketiga berisi M buah bilangan bulat Bi (1 ≤ Bi ≤ 100.000; i=1..M) dengan Bi – 1 ≤ Bi untuk i=2..M yang merepresentasikan rating semua peserta putri.
Output
Untuk setiap kasus, output dalam satu baris “Kasus #X: Y” (tanpa kutip, antara titik dua ‘:’ dan Y dipisahkan oleh tepat sebuah spasi) dengan X adalah nomor kasus dimulai dari 1 secara berurutan dan Y adalah sebuah bilangan bulat yang menyatakan banyaknya cara membentuk tim yang terdiri dari 1 putra dan 1 putri sedemikian sehingga jumlah rating mereka minimal K pada kasus tersebut.
|
#include<stdio.h>
#include<string.h>
#include<windows.h>
int t,m,k1[1001],k2[1001],n,max[20],temp[5];
int main(){
do{
scanf("%d",&t);
fflush(stdin);
}while(t > 20 || t <= 0);
for(int c=0;c<t;c++)
{
do{
scanf("%d %d %d",&n,&m,&max[c]);
}while(n<=1 || n>= 40000 || m<= 1 || m>= 40000 || max[c]<=1 || max[c]>=100000);
for(int i=0;i<n;i++){
scanf("%d",&k1[i]);
}
for(int i=0;i<m;i++){
scanf("%d",&k2[i]);
}
for(int j=0;j<n;j++){
for(int n=0;n<m;n++){
if(k1[j] + k2[n] > max[c]){
temp[c] += 1;
}
}
}
}
for(int c=0;c<t;c++){
printf("Kasus #%d: %d\n",c+1,temp[c]);
}
system("pause");
return 0;
}