Saturday, 27 August 2016

http://codeforces.com/contest/709/problem/B

প্রশ্নঃ ১২,১৭,৫,৭,১৯ এই সংখ্যা গুলো কোন রাস্তার বিভিন্ন স্থান/দুরুত্ত  নির্দেশকরে। রাস্তাটি সরল/ সজা। একাটা বিন্দু/ স্থান ১০ দেওয়া হল । সেই বিন্দু টা সহ কিন্তু অবশ্যই যে কোন একটি বিন্দু বাদ দিয়া সর্ব নিম্ন কম দুরুত্তে বাকি সকল বিন্দু দিয়ে কি ভাবে আসা যায়?

সমাধানঃ
ডাটা গূলোকে আগে শর্ট কোড়ে নেই।
যথা ৫,৭,১২,১৭,১৯
আচ্ছা এখন যদি ১০ থেকে ১০ এর কাছাকাছী ডাটা ১২,১২ থেকে ৫, ৫ থেকে ৭,৭ থেকে ১৭ তে আসতে পারি তাই না ।  কিন্তু  খেয়াল  করলে দেকবে  যে ১২ তে ২ বাড় আসতে হয়েছে। সুতরাং শর্ট  করার  পর যে কোনো এক  দিক থেকে গেলে কোণো ডাটাতে  একবার এর  বেশী যাওয়ার প্রয়োজন  পরবেনা ।
অর্থাৎ ১২ থেকে ৫ ,৫ থেকে ১৭ এর দিকে অথবা ১২ থেকে ১৯ ,১৯ থেকে ৭ এর দিকে আসতে  হবে
এবার প্রব্লেম টা দেওয়া হলঃ
Problem:http://codeforces.com/contest/709/problem/B
Code:
#include<bits/stdc++.h>
using namespace std;
long long ar[1000009];
int main()
{
    long long n,a,i;
    while(cin>>n>>a)
    {
        for(i=0; i<n; i++)
            cin>>ar[i];
        if(n==1)
        {
            cout<<0<<endl;

        }
        else
        {
            sort(ar,ar+n);
            cout<<min(min(abs(a-ar[0]),abs(ar[n-2]-a))+ar[n-2]-ar[0],min(abs(ar[n-1]-a),abs(ar[1]-a))+ar[n-1]-ar[1])<<endl;
        }
    }
    return 0;
}

Thursday, 25 August 2016

http://codeforces.com/problemset/problem/709/A

Problem:http://codeforces.com/problemset/problem/709/A


#include<bits/stdc++.h>
using namespace std;
int main()
{
       long long n,b,d,m,i,sum,ans;
       while(cin>>n>>b>>d)
       {
              sum=0;
              ans=0;
              for(i=0;i<n;i++)
              {
                     cin>>m;
                     if(m<=b)
                            sum+=m;
                           if(sum>d)
                           {
                                  ans++;
                                  sum-=sum;
                           }
              }
              cout<<ans<<endl;
       }
       return 0;
}

Friday, 19 August 2016

UVA 10106 - Product

Problem Link : uva 10106 - Product
আগে একটা গুন দেখে নেই_
       ১২৩
       ১২৩
     ৩৬৯
   ২৪৬০
 ১২৩০০
১৫১২৯
এতাকেই আমরা programming এর ভাষায় এভাবে করব_
Seep 1:
১২৩        +     ১২৩  +   ১২৩
    ৩                 ২                ১
৩৬৯            ২৪৬       ১২৩
Step 2:
প্রথম গুন ফল এর সঙ্গে ০ টা ০
২য়  গুন ফল এর সঙ্গে ১ টা ০
৩য় গুন ফল এর সঙ্গে ২ টা ০ নিয়ে যোগ করি_
     ৩৬৯
   ২৪৬০
 ১২৩০০
১৫১২৯
এবার এপার টা এক্তু খেয়াল করি_.
১)    ৩*৩ করে গুন করে প্রথম এ বসালাম ৯
অর্থাৎ ০ নং পজিশনএর ৩, ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ০+০ নং পজিশন এ বসাই
২)   ২*৩ করে গুন করে এবারএ বসালাম ৬
অর্থাৎ ১ নং পজিশনএর ২ , ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ১+০ নং পজিশন এ বসাই
৩)   ১*৩ করে গুন করে এবারএ বসালাম ৩
অর্থাৎ ২নং পজিশনএর ১, ০ নং পজিশন এর ৩ এর সঙ্গে গুন করে ২+০ নং পজিশন এ বসাই
৪) ৩*২করে গুন করে এবারএ বসালাম ৬+৬
অর্থাৎ ০ নং পজিশনএর ৩, ১নং পজিশন এর ২এর সঙ্গে গুন করে ০+১ নং পজিশন এ বসাইআগে যা এক নং ১ নংএ ছিল তা যোগ করি অর্থাৎ ৬+৬
এভাবে চলতে থাকবে_
Example:    er[i+j]+=cr[i]*dr[j];
Uva 10106 - Product code:
#include<bits/stdc++.h>
using namespace std;
int main()
{
       char ar[300],br[300];
       long long i,cr[300],l1,l2,dr[300],l,j;
       while(cin>>ar>>br)
       {
              long long er[600]={0};
              l1=strlen(ar);
              l2=strlen(br);
              for(i=l1-1;i>=0;i--)
              cr[l1-1-i]=ar[i]-'0';
              for(i=l2-1;i>=0;i--)
              dr[l2-1-i]=br[i]-'0';
              for(i=0;i<l1;i++)
              {
                     for(j=0;j<l2;j++)
                     {
                          er[i+j]+=cr[i]*dr[j];
                          er[i+j+1]+=er[i+j]/10;
                          er[i+j]%=10;
                         // cout<<er[i+j]<<" "<<er[i+j+1]<<endl;
                     }
              }
              l=l1+l2;
              while(er[l]==0&&l>0)
                     l--;
              for(i=l;i>=0;i--)
                     cout<<er[i];
              cout<<endl;


       }
       return 0;
}



Wednesday, 17 August 2016

UVA 1226 - Numerical surprises

Problem link:UVA 1226 - Numerical surprises

#include<bits/stdc++.h>
using namespace std;
#include<string.h>
int main()
{
       long long n,l1,l2,b,s,m,i;
       char a[2050];
       cin>>n;
       while(n--)
       {
              cin>>b>>a;
              l1=strlen(a);
              m=0;
              for(i=0;i<l1;i++)
              {
                  s=a[i]-'0';
                  m=(m*10+s)%b;
                  //cout<<"m="<<m<<endl;
              }
              cout<<m<<endl;

       }
       return 0;
}

UVA 713 - Adding Reversed Numbers

Problem:UVA 713 - Adding Reversed Numbers

#include<bits/stdc++.h>
using namespace std;
#include<string.h>
int main()
{

    char ar[250],br[250];
    long long cr[250];
    long long n,i,l1,l2,j,ll1,ll2,sum,c,carry,k;
    cin>>n;
    for(i=1; i<=n; i++)
    {

        cin>>ar>>br;
        ll1=strlen(ar);
        ll2=strlen(br);
        if(ll1>ll2)
        {
            l1=ll1;
            l2=ll2;
        }
        else
        {
            l1=ll2;
            l2=ll1;
        }
        carry=0;
        c=0;
        for(j=0; j<l2; j++)
        {
            sum=(ar[j]-'0')+(br[j]-'0')+carry;
            cr[c]=sum%10;
            carry=sum/10;
            //cout<<"a1=="<<cr[c]<<endl;
            c++;
        }
        if(ll1>ll2)
        {
            for(j=l2; j<l1; j++)
            {
                sum=(ar[j]-'0')+carry;
                cr[c]=sum%10;
                carry=sum/10;
                //cout<<"a2=="<<cr[c]<<endl;
                c++;
            }
        }
        else
        {
            for(j=l2; j<l1; j++)
            {
                sum=(br[j]-'0')+carry;
                cr[c]=sum%10;
                carry=sum/10;
               // cout<<"a3=="<<cr[c]<<endl;
                c++;
            }
        }
        while(carry)
        {
            cr[c]=carry%10;
            carry/=10;
            //cout<<"a4=="<<cr[c]<<" "<<carry<<endl;
            c++;
        }
        for(k=0; k<c; k++)
        {
            if(cr[k]!=0)
                break;
        }
        for(j=k; j<c; j++)
        {
            cout<<cr[j];
        }
        cout<<endl;
    }
    return 0;
}

Educational Codeforces Round 15'/B. Powers of Two

Problem link:http://codeforces.com/contest/702/problem/B
#include<bits/stdc++.h>
using namespace std;
long long ar[100009];
int main()
{
    map<long long,long long>mp;
    long long n,i,sum,f,c,j,p,s;
    while(cin>>n)
    {
        for(i=0; i<n; i++)
        {
            scanf("%I64d",&ar[i]);
            mp[ar[i]]++;
             //printf("%I64d\n",mp[ar[i]]);
        }
        sum=0;
        for(i=0; i<n; i++)
        {
               mp[ar[i]]--;
               for(j=1;j<=31;j++)
               {
                   p=1<<j;
                   s=p-ar[i];
                   //printf("%I64d\n",s);
                   if(mp[s])
                            sum+=mp[s];
               }
        }
          printf("%I64d\n",sum);
    }


    return 0;
}

Monday, 15 August 2016

Educational Codeforces Round 15_A. Maximum Increase

Problem link:http://codeforces.com/contest/702/problem/A
#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n,i,t1,mx,sum,t2,a;
    while(cin>>n)
    {
           t1=0;
           mx=0;
           sum=0;
        for(i=0; i<n; i++)
           {
                  cin>>a;
                  if(a>t1)
                     sum++;
                  else
                     sum=1;
                  t1=a;
                  if(mx<sum)
                     mx=sum;
           }
           cout<<mx<<endl;
    }
    return 0;
}