Thursday, August 24, 2017

10107 - What is the Median? Uva Problem Solution & Logic


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1048


সহজ একটা প্রোবলেম , ছোটবেলায় আমরা মধ্যক বের করতাম , মনে আছে কি ???   হুম, এখানেও
প্রায়ই , একই কাজ করতে হবে -  ধরো যদি দেয়া আছে , 

    ১ , ৫ , ৩ , ৪ , ৭  ।। তাহলে , প্রথমে আমরা ছোট থেকে বড় আকারে সাজিয়ে নেই ।।
তাহলে , সাজিয়ে পাবো -- ১ , ৩ , ৪ , ৫ , ৭ । এখন যেহেতু , এখানে - বিজোড় সংখ্যক সংখ্যা আছে ,তাহলে  একদম  মাঝের    ৪ ই হবে , মধ্যক । কিন্তু , যদি - থাকতো  ১ , ৩ , ৪ , ৫ , ৭ , ৯ তাহলে ????
এখানে তো - মাঝে বলতে কিছু নেই     । ।   সেইজন্যই ,  মাঝের দুইটা সংখ্যা  ৪  ও  ৫  নিয়ে এদের এভারেজ করলে , উত্তর পেয়ে যাবো । চলো , কোড দেখে নেই এবং বিশ্লেষণ বোঝার ট্রাই করি ।


#include<iostream>
#include<algorithm>

using namespace std;

int main()

{
    long long ar[100000],n,i=0,l;

    while(cin>>n)

    {
               ar[i]=n;

            sort(ar,ar+i+1);

        if(i%2==0)
            cout<<ar[i/2]<<endl;

        else

        {
            l=ar[i/2]+ar[i/2+1];
            cout<<l/2<<endl;
        }

        i++;
    }

return 0;

}







প্রথমে , i=0 ।। তাহলে , ইনপুটে যদি দেই - 1 ,  তাহলে ar[0]= 1 ।

sort(ar,ar+i+1) = sort(ar,ar+0+1) = sort (ar,ar+1) ,অ্যারের প্রথম ১ টা মান সর্ট করবে , অ্যারে যা ছিলো তাই আছে  ar[0]= 1।

  if(i%2==0)  এই শর্ত পূরণ করে , প্রিন্ট করবে  ar[i/2] = ar[0/2] = ar[0] = 1  && i=0 বেড়ে i=1 হয়ে গেলো   |

আবার ইনপুট দিলাম , ar[1] = 3  | |  সুতরাং , অ্যারে'টি  দাড়ালো  ar[0]= 1,ar[1] = 3 ।।

sort(ar,ar+i+1) = sort(ar,ar+1+1) = sort (ar,ar+2) , অ্যারের প্রথম ২ টা মান সর্ট করবে , যা ছিলো - তাই থাকবে , কারণ সর্ট অবস্থায়ই আছে , অ্যারে ।

if(i%2==0)  এই শর্ত পূরণ হয় নি , কারণ  i=1|  সুতরাং , ar[i/2]+ar[i/2+1] = ar[0.5] + ar [1.5]= ar[0] +ar[1] = 1+3 = 4 , সুতরাং প্রিন্ট করবে ---  4/2 = 2 | |   [ বিঃদ্রঃ - (i/2) = 0.5  হলেও i কে int  হিসেবে ডিক্লেয়ার করা হয়েছে , এছাড়াও index  কখনো fraction হতে পারে না , বিধায় 0.5 & 1.5 কে ধরে নেওয়া হয়  0   ]

আশা করি , বাকি টুকু একটু কষ্ট করলেই খুব সহজেই বুঝা যাবে ...

2 comments: