শুক্রবার, ৩০ সেপ্টেম্বর, ২০১৬

UVA 10810 - Ultra-QuickSort

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;

long long int arr[500010],swaps;
void marge(long long  l,long long  m ,long long  r)
{
    long long  i,j,k;
    long long n1=m-l+1;
    long long n2=r-m;
    long long L[n1],R[n2];
    for(i=0;i<n1;i++)
    {
        L[i]=arr[l+i];
    }
    for(j=0;j<n2;j++)
    {
        R[j]=arr[m+1+j];
    }
    i=0;j=0;k=l;
    while(i<n1 && j<n2)
    {
        if(L[i]<=R[j])
        {
            arr[k]=L[i];
            i++;
        }
        else
        {
            arr[k]=R[j];
            j++;
            swaps += n1 - i;
        }
        k++;
    }
    while(i<n1)
    {
        arr[k]=L[i];
        i++;
        k++;
    }
      while(j<n2)
    {
        arr[k]=R[j];
        j++;
        k++;
    }
}
void mergeSort(long long int l,long long  r)
{
    if(l<r)
    {
        long long  m=l+(r-l)/2;
        mergeSort(l, m);
        mergeSort(m+1, r);

        marge(l, m, r);

    }
}
main()
{
   long long  n,i;
   while(~scanf("%lld",&n))
   {
         swaps=0;
         if(n==0)
            break;
       for(i=0;i<n;i++)
       {
           scanf("%lld",&arr[i]);
       }
       mergeSort(0,n-1);
       cout<<swaps<<endl;
   }

}

বৃহস্পতিবার, ২২ সেপ্টেম্বর, ২০১৬

UVA 661 - Blowing Fuses

#include<bits/stdc++.h>
using namespace std;
main()
{
    long long a,b,c,cs=1;
    while(cin>>a>>b>>c)
    {
          long long a1,k,visit[100]={0},ans=0,mp[1000]={0},i,sum=0;
          if(a==0&&b==0&&c==0)
            break;
          else
          {
          printf("Sequence %lld\n",cs);
          for(i=1;i<=a;i++)
          {
                cin>>k;
                mp[i]=k;
          }
          for(i=1;i<=b;i++)
          {
                cin>>a1;
                if(visit[a1]==0)
                {
                      sum=sum+mp[a1];
                      visit[a1]=1;
                }
                else if(visit[a1]==1)
                {
                      sum-=mp[a1];
                      visit[a1]=0;
                }
                ans=max(ans,sum);
          }
          if(ans>c)
          {
                printf("Fuse was blown.\n");
          }
          else
          {
                printf("Fuse was not blown.\n");
printf("Maximal power consumption was %lld amperes.\n",ans);
          }
          cout<<endl;
          }
          cs++;
    }
}

বৃহস্পতিবার, ৮ সেপ্টেম্বর, ২০১৬

UVA 11661 - Burger Time?

#include<bits/stdc++.h>
using namespace std;
main()
{
      long n;
      while(cin>>n)
      {
            if(n==0)
                  break;
            else
            {
                  string s;
                  long long r=0,d=0,l,k,ans=0,ans1=0,mn=2000010,mn1=2000010,i,x=0,x1=0,z=0;
                  cin>>s;
                  l=s.size();
                  for(i=0;i<l;i++)
                  {
                        if(s[i]=='R')
                        {
                              r=1;
                              k=i;
                        }
                        else if(s[i]=='D')
                        {

                              if(r==1)
                              {
                              ans=i-k;
                              mn=min(ans,mn);
                              x=1;
                              r=0;
                              }
                        }
                        else if(s[i]=='Z')
                        {
                              z=1;
                              break;
                        }
                  }
                  if(z==0)
                  for(i=0;i<l;i++)
                  {
                        if(s[i]=='D')
                        {
                              d=1;
                              k=i;
                        }
                        else if(s[i]=='R')
                        {

                              if(d==1)
                              {
                              ans1=i-k;
                              x1=1;
                              d=0;
                              mn1=min(ans1,mn1);
                              }
                        }
                  }
                  if(z==1)
                  {
                        cout<<"0"<<endl;
                  }
                  else if(x==1&&x1==1)
                  {
                        cout<<min(mn,mn1)<<endl;
                  }
                  else if(x==0&&x1==0)
                  {
                        cout<<"0"<<endl;
                  }
                  else
                        cout<<min(mn,mn1)<<endl;
            }
      }
}

বৃহস্পতিবার, ১ সেপ্টেম্বর, ২০১৬

UVA 11466 - Largest Prime Divisor

#include<bits/stdc++.h>
using namespace std;
main()
 {
    long long n,ans,i;
    long long cnt;
    while (cin>>n)
      {
         if(n==0)
            break;
         else
          {
          if(n<0)
          n=n*-1;
          ans=-1;
          cnt=0;
        for (i=2;i*i<= n;i++)
            {
               while (n%i == 0)
                    {
                        n/=i;
                        ans=i;
                    }
               if (ans==i)
                    {
                         cnt++;
                    }
               if(n==1)
                   break;
           }


        if (n!=1 && ans!=-1)
            ans=n;
        else if(cnt==1)
            ans=-1;
        cout<<ans<<endl;
       }
      }
}

Factorization with prime Sieve

vector <int> prime; char sieve[1000009]; int N=1000009; void primeSieve ( ) { sieve[0] = sieve[1] = 1; prime.push_back(2); ...