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;
}

Sunday 14 August 2016

http://codeforces.com/problemset/problem/706/B

PROBLEM: http://codeforces.com/problemset/problem/706/B


#include<bits/stdc++.h>
using namespace std;
long long ar[1000002];
int main()
{
    long long n,m,c,i,j,br;
    while(cin>>n)
    {
        for(i=0; i<n; i++)
            cin>>ar[i];
            sort(ar,ar+n);
        cin>>m;

        for(j=0; j<m; j++)
        {
            cin>>br;
            c=upper_bound(ar,ar+n,br)-ar;
            cout<<c<<endl;
        }
    }
    return 0;
}

UVA 465 - Overflow

Description

1)
The C library function double atof(const char *str) converts the string argument str to a floating-point number (type double).
2)
 printf(" int min : %d ", INT_MIN); // INT_MIN, INT_MAX, SCHAR_MIN, SCHAR_MAX ....etc  
     printf(" int max : %d  ",INT_MAX);// pre defined constants to get the values of datatypes      
code:

#include<bits/stdc++.h>
using namespace std;
#include<string.h>
int main()
{
    long long l,x,sum,i;
    long double aa,bb;
    char a[1000],ch,b[1000];
    while(cin>>a)
    {
        cin>>ch>>b;
        aa=atof(a);
        bb=atof(b);
        //cout<<aa<<" "<<bb<<endl;
        //cout<<a<<" "<<b<<" "<<INT_MAX<<endl;
        cout<<a<<" "<<ch<<" "<<b<<endl;
        if(aa>INT_MAX)
            cout<<"first number too big\n";
        if(bb>INT_MAX)
            cout<<"second number too big\n";
        if(ch=='+')
        {
            if(aa+bb>INT_MAX)
                cout<<"result too big\n";

            }
        else if(ch=='*')
        {
            if(aa*bb>INT_MAX)
                cout<<"result too big\n";
        }
    }
    return 0;
}

UVA 424 - Integer Inquiry

#include<bits/stdc++.h>
using namespace std;
#include<string.h>
int main()
{
    string ar;
    long long l,carry=0,c,mx,i,br[200];

    memset(br,0,sizeof(br));

    while(1)
    {

        cin>>ar;
        //add(ar);
        if(ar=="0")
            break;
        c=0;
        carry=0;
        mx=-1;
        l=ar.length();
        for(i=l-1; i>=0; i--)
        {
            br[c]= ar[i]-'0'+carry+br[c];
            carry=br[c]/10;
            br[c]=br[c]%10;

            c++;
            if(mx<c)
                mx=c;
        }


        if(carry>0)
        {
            while(carry)
            {
                br[c++]+=carry%10;
                carry/=10;
                if(mx<c)
                    mx=c;
            }
        }

    }
        for(int i=mx-1; i>=0; i--)
            cout<<br[i];
        cout<<endl;

    return 0;
}

Thursday 11 August 2016

UVA 10013 - Super long sums

#include<bits/stdc++.h>
using namespace std;
#include<string.h>
#define mx 1000009
long long s1[mx],s2[mx];
long long s3[mx];
int main()
{
    long long i,j,k,n,m,l1,l2,a,b,s,carry,c,ll1,ll2;
 
    cin>>n;
    for(i=1; i<=n; i++)
    {

        cin>>m;
        for(j=0; j<m; j++)
            cin>>s1[j]>>s2[j];
        carry=0;
        c=0;
        for(j=m-1; j>=0; j--)
        {
            a=s1[j];
            b=s2[j];
         
            s=a+b+carry;
            if(s>9)
            {

                s3[c]=s%10;
                carry=1;
           
                c++;
            }
            else
            {
                s3[c]=s;
                carry=0;
           
                c++;
            }
        }
        if(carry==1)
            s3[c++]=carry;
            if(i!=1)
              cout<<endl;
        for(k=c-1; k>=0; k--)
            cout<<s3[k];
        cout<<endl;
    }
    return 0;


}