Monday 17 April 2017

UVA 10107 Solution

UVA 10107:

এইটা অনেক সহজ একটা প্রব্লেম।  প্রথমে ইনপুট গুলাকে একটা অ্যারে অথবা ভেক্টরে রাখতে হবে। (আমি ভেক্টর ব্যাবহার করেছি কারন সাইজ নিয়ে কোন চিন্তা করতে হয়না। ডায়নামিকালি সাইজ বাড়ানো যায়।)
ভেক্টরটাকে সর্ট করতে হবে। তারপর ভেক্টর সাইজ দেখতে হবে। ভেক্টর সাইজ যদি জোর সংখ্যক হয় তাহলে ২দিয়ে ভাগ করে তার সাথে আগের ইনডেক্স টা যোগ করতে হবে।  তারপর মোট যে রেজাল্ট টা আসবে তাকে ২দিয়ে ভাগ করে ভেক্টরে রেখে দিলেই হয়ে যাবে।
আর  ভেক্টর সাইজ যদি বিজোর সংখ্যক হয় তাহলে ২দিয়ে ভাগ করে  ভেক্টরে রেখে দিলেই হবে।
ফেইসবুকে আমি

আমার কোডঃ


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    vector<int>store;
    while(cin>>n){
        store.push_back(n);
        sort(store.begin(),store.end());
        if(store.size()%2==0)
        {
            cout<<(store[store.size()/2]+store[store.size()/2-1])/2<<endl;
        }
        else
        {
           cout<<store[store.size()/2]<<endl;
        }
    }
    return 0;
}

UVA 146 Solve

"UVA 146" প্রব্লেমটা একটা পারমুটেশন প্রব্লেম। এটা সল্ভ করার জন্য next_permutation সম্পর্কে ধারণা থাকতে হবে(next_parmutaion).  প্রথমে আমরা ডান থেকে বাম দিকে চেক করব, যদি ডান দিকে কোন বড় উপাদান না পাই তাহলে " no successor" প্রিন্ট করব. আর যদি পাই তাহলে ন্যূনতম বড় উপাদানের সাথে এইটা পরিবর্তন করবো এবং বাকী উপাদান গুলো সর্ট করব


যেমনঃ ১, ২,৩,৩  এই সিকুয়েন্স টা হবে ১,৩,২,৩

 এইটা কিভাবে করা হল???😲

প্রথমে সবচেয়ে বড় উপাদান ৩ এর সাথে ২ এর তুলনা করা হল (২<৩) পরে জাস্ট [২,৩] কে সর্ট করা হইছে।

এখানে আমি সি++ ব্যাবহার করে প্রব্লেমটা সল্ভ করছি।


#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s[50];
    while(1)
    {
        cin>>s;
        if(s[0]=='#')
            break;
            else{
               int l=strlen(s);
               if(next_permutation(s,s+l))
               {
                   cout<<s<<endl;
               }
               else{
                    cout<<"No Successor"<<endl;
                   }
              }
    }
    return 0;
}

Monday 10 April 2017

UVA 299 solve

 #include<iostream>
 #include<cstdio>
 using namespace std;
 int main()
 {
     int A[70],n,m,i,j,s;
     cin>>n;
     while(n--)
     {
         cin>>m;
         for(i=s=0;i<m;i++)
         {
             cin>>A[i];
         }
         /*sort*/
         for(i=0;i<m-1;i++)
         {
             for(j=i+1;j<m;j++)
             {
                 if(A[i]>A[j])
                    s++;
             }
         }
         printf("Optimal train swapping takes %d swaps.",s);
     }
     return 0;
 }

UVA 12468 solve

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,s;

    while(1)
    {
        scanf("%d %d",&a,&b);
        if(a==-1&&b==-1)
            break;
        if(a==0&&b==99||a==99&&b==0)
            printf("1\n");
        else
        {
            s=abs(a-b);
            if(s>50)
                s=100-s;
            printf("%d\n",s);
        }
    }
    return 0;
}

UVA 11942 solve

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int test,fnum,allnum;
    bool up,down;
    cin>>test;
    cout<<"Lumberjacks:"<<endl;
    while(test--)
    {
        up=down=false;
        cin>>fnum;
        for(int i=0;i<9;i++)
        {
            cin>>allnum;
            if(fnum<allnum)
                up=true;
            else
                down=true;
            fnum=allnum;

        }
        if(up&&down)
        {

            cout<<"Unordered"<<endl;
        }

        else{
            cout<<"Ordered"<<endl;
        }
    }
    return 0;
}

UVA 10474 solve


#include<iostream>
using namespace std;
int main()
{
    int marbel,num;
    int a[10000];
  while(cin>>marbel&&cin>>num)
                        {
                            if(marbel==0&&num==0)
                                break;
                            else
                            for(int i=0;i<marbel;i++)
                            {
                                cin>>a[i];
                            }
                        }
           return 0;
}

UVA 10127 solve

 
#include<bits/stdc++.h>
using namespace std;
int calculate(int input)
{
    long int N=1;
    int one=1,k;
    while(1)
    {
        if(N<input)
        {
            N=N*10+1;
            ++one;
        }
        k=N%input;
        if(k==0)
            break;
        else
            N=k;
    }
    return one;
}
int main()
{
    int N;
    while(cin>>N)
        cout<<calculate(N)<<endl;
    return 0;
}

UVA 12372 solve

#include<stdio.h>
int main()
{
int i,T,L,W,H;
int n=1;
scanf("%d",&T);
for(i=0;i<T;i++)
{
scanf("%d%d%d",&L,&W,&H);
printf("case %d: ",n++);
if(L<=20&W<=20&H<=20)
printf("Good\n");
else
printf("bad\n");
}
return 0;
}

UVA 11728 solution



#include<stdio.h>
int main()
{
int a,b,c,T,i=1;
scanf(“%d”,&T);
while(i<=T)
{
scanf(“%d %d %d”,&a,&b,&c);
if((a>b&&a<c)||(c<a&&a<b))
printf(“Case %d: %d\n”,i,a);
if((b>a&&b<c)||(c<b&&b<a))
printf(“Case %d: %d\n”,i,b);
if((c>a&&b>c)||(c>b&&a>c))
printf(“Case %d: %d\n”,i,c);
i++;
}
return 0