Sunday, August 27, 2017

10038 - Jolly Jumpers Uva Problem Solution & Logic

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



এই সমস্যাটি , ঠিকভাবে বর্ণনা দেওয়া নেই , জাজ-এ এ কারণেই , অনেক কিছুই স্পষ্ট থাকে না অনেকের কাছে , এই সমস্যা নিয়ে ।

যাই হোক , তোমায় একটা - অ্যারে দেওয়া থাকবে , তোমায় সেই উপাদানগুলির পার্থক্য  বের করতে হবে , তারপরে সর্ট করতে হবে - এখন যে মান পাবো ,সেটা অবশ্যই  ১ হতে  যে কয়টা উপাদান থাকবে অ্যারে'তে তার চেয়ে এক কম অবদি  থাকতে হবে ।

চলো , একটা উদাহরণ দেই - তাহলে বিষয়টা ক্লিয়ার হবে , আমাদের কাছে

ধরো , অ্যারে'তে  4  টি মান দেয়া আছে ,       1    4    2     3    
                                                
             তাহলে      ডিফারেন্স গুলো     হবে       3     2     1      তাই না  ??? 


অ্যারে'তে  কয়টি মান দেইয়া ছিলো ??  4  টি, এখন   এই  4 থেকে 1   বিয়োগ করলে কতো হয় ??  3, তাই না ??   হুম , তাহলে  1 থেকে  3 অবদি সব সংখ্যা কি ??? ওই ডিফারেন্স এর যে লিস্ট বানাইছি , সেটাতে আছে ??  ডিফারেন্স এর লিস্ট এ আছে   3     2     1   , এর মানে  1 থেকে  3 অবদি সব সংখ্যা এই ডিফারেন্স লিস্টেই আছে , সুতরাং এটা জলি জাম্বার ।

#include<algorithm>
#include<cmath>
#include<cstdio>

using namespace std;

int n;
int ar[3100], dar[3100];


int main() {
   
    while(scanf("%d", &n) == 1) {
            bool joy=true;
        for(int i = 0; i < n; i++){
            scanf("%d", &ar[i]);
        }
       
        for(int i = 0; i < n - 1; i++){
        dar[i] = abs(ar[i + 1] - ar[i]);
        }
       
    sort(dar, dar + n - 1);
   
    for(int i = 0; i < n - 1; i++)
       
        if(dar[i] != i + 1) {
            joy=false;
        }
   
        if(joy==false){
    printf("Not jolly\n");
        }
       
        else{
    printf("Jolly\n");
        }
       
    }
    return 0;
}








3 comments:

  1. অনেক জায়গায় দেখেও এই প্রব্লেমটির লজিক ভালো ভাবে বুঝতে পারি নাই। কিন্তু আপনি খুবই সহজ করে ব্যাখ্যা করে দিয়েছেন প্রব্লেমটি।

    অসংখ্য ধন্যবাদ আপনাকে স্যার।

    ReplyDelete
  2. Thank you.
    After a long time. Understood

    ReplyDelete
  3. #include
    #include
    using namespace std;
    int main()
    {
    int n;
    //cin>>n;
    while(cin>>n)
    {
    int a[n+1];
    for(int i=0;i>a[i];
    }
    int diff[n+1];
    for(int i=0;i<n-1;i++)
    {
    diff[i]=abs(a[i+1]-a[i]);
    // cout<<diff[i]<<" ";
    }
    //cout<<endl;
    sort(diff,diff+(n-1));
    /*for(int i=0;i<n-1;i++)
    {
    cout<<diff[i]<<" ";
    }
    cout<<endl;*/
    int count;
    for(int i=0;i<n-1;i++)
    {
    count=0;
    if(diff[i]==(i+1))
    {
    count=1;
    }
    }
    if(count==1)
    {
    cout<<"Jolly"<<endl;
    }
    else cout<<"Not jolly"<<endl;
    }
    return 0;
    }


    where is the problem ??
    it's getting WA...
    please help

    ReplyDelete