Saturday, September 16, 2017

UVA 10114 - Loansome Car Buyer

Problem Link : https://uva.onlinejudge.org/index.php?option=onlinejudge&Itemid=99999999&page=show_problem&category=&problem=1055&m


Solve:

#include<bits/stdc++.h>

using namespace std;

map<int,float>mp;

int main()
{


    int a,d,e,ans;
    float b,c,f,dr;
    float carv=0,own=0;

    while(1)
    {
        scanf("%d%f%f%d",&a,&b,&c,&d);

        if(a<0) break;

        mp.clear();
        ans=0;

        for(int i=1; i<=d; i++)
        {
            scanf("%d%f",&e,&f);
            mp[e]=f;
        }

        own=c;
        carv=b+c;
        b=c/a;
        for(int i=0; i<=a; i++)
        {
            if(mp[i]==0)
            {
                mp[i]=mp[i-1];
            }

            carv=carv-(carv*mp[i]);
            own=c-(i*b);

            if(carv>own)
            {
                ans=i;
                break;
            }

        }
        if(ans!=1) printf("%d months\n",ans);
        else printf("%d month\n",ans);
    }

}

Sunday, March 26, 2017

1033 - Generating Palindromes

Problem Link : http://lightoj.com/volume_showproblem.php?problem=1033

Solution :

#include<bits/stdc++.h>

using namespace std;

int a[102][102];

int main()
{
    string text,pattern;

    int t,l1;
    scanf("%d",&t);

    for(int ca=1; ca<=t; ca++)
    {
        cin>>text;
        pattern=text;
        reverse(pattern.begin(),pattern.end());

        l1=text.size();

        memset(a,0,sizeof(a));

        for(int i=1; i<=l1; i++)
        {
            for(int j=1; j<=l1; j++)
            {
                if(text[i-1]==pattern[j-1]) a[i][j]=a[i-1][j-1]+1;
                else a[i][j]=max(a[i-1][j],a[i][j-1]);
            }
        }

        cout<<"Case "<<ca<<": "<<l1-a[l1][l1]<<endl;

    }



}

Thursday, December 15, 2016

1043 - Triangle Partitioning

Problem Linkhttp://lightoj.com/volume_showproblem.php?problem=1043

Solution :

#include<bits/stdc++.h>

using namespace std;

int main()
{

    double ab,ac,bc,r;
    int t;
    double ans;
    scanf("%d",&t);

    for(int ca=1; ca<=t; ca++)
    {
        cin>>ab>>ac>>bc>>r;

        r=(1/r)+1;

        ab=ab*ab;

        ans=sqrt(ab/r);
        printf("Case %d: %f\n",ca,ans);
    }


}

1253 - Misere Nim

Problem Linkhttp://lightoj.com/volume_showproblem.php?problem=1253

Solution :

#include<bits/stdc++.h>

using namespace std;

int main()
{
    int a[103];

    int t,k,ans,ok;

    scanf("%d",&t);

    for(int ca=1;ca<=t;ca++)
    {
        scanf("%d",&k);

        for(int i=1;i<=k;i++)
        {
            scanf("%d",&a[i]);
        }
            ok=0;

           for(int i=1;i<=k;i++)
           {
               if(a[i]==1) ok=1;
               else
               {
                   ok=0;
                   break;
               }
           }
           ans=0;
           for(int i=1;i<=k;i++)
           {
               ans=ans xor a[i];
           }

                if(ok==1 and (k%2!=0)) printf("Case %d: Bob\n",ca);
                else if(ok==1 and (k%2==0)) printf("Case %d: Alice\n",ca);
                else if(ans==0) printf("Case %d: Bob\n",ca);
                else printf("Case %d: Alice\n",ca);
        }

    }


Wednesday, December 14, 2016

1247 - Matrix Game

Problem Link : http://lightoj.com/volume_showproblem.php?problem=1247

Solution :

#include<bits/stdc++.h>

using namespace std;

vector<int>v;

int main()
{
    int t,m,n,sum,ans,a;

    scanf("%d",&t);

    for(int ca=1; ca<=t; ca++)
    {
        scanf("%d%d",&m,&n);

        for(int i=1; i<=m; i++)
        {
            sum=0;
            for(int j=1; j<=n; j++)
            {
                scanf("%d",&a);
                sum=sum+a;
            }
            v.push_back(sum);
        }

        ans=0;

        for(int i=0; i<v.size(); i++)
        {
            ans=ans xor v[i];
        }

        if(ans==0) printf("Case %d: Bob\n",ca);
        else printf("Case %d: Alice\n",ca);

        v.clear();
    }
}

1186 - Incredible Chess

Problem Link : http://lightoj.com/volume_showproblem.php?problem=1186

Solution :

#include<bits/stdc++.h>

using namespace std;

vector<int>v;

int main()
{
    int t,n,ans;

    int a[103],b[103];

    scanf("%d",&t);

    for(int ca=1;ca<=t;ca++)
    {
        scanf("%d",&n);

        for(int i=1;i<=n;i++) scanf("%d",&a[i]);
        for(int i=1;i<=n;i++) scanf("%d",&b[i]);

        for(int i=1;i<=n;i++) v.push_back(b[i]-a[i]-1);

        ans=0;

        for(int i=0;i<v.size();i++) ans=ans xor v[i];

        if(ans==0) printf("Case %d: black wins\n",ca);
        else printf("Case %d: white wins\n",ca);

        v.clear();

    }

}

1192 - Left Right

Problem Link : http://lightoj.com/volume_showproblem.php?problem=1192

Solution :

#include<bits/stdc++.h>

using namespace std;

vector<int>v;

int main()
{
    int t,k,a,b,ans;
    scanf("%d",&t);

    for(int ca=1;ca<=t;ca++)
    {
        scanf("%d",&k);

        for(int i=1;i<=k;i++)
        {
            scanf("%d%d",&a,&b);
            v.push_back(b-a-1);
        }
        ans=0;
        for(int i=0;i<v.size();i++)
        {
            ans=ans xor v[i];
        }

        if(ans==0) printf("Case %d: Bob\n",ca);
        else printf("Case %d: Alice\n",ca);
        v.clear();
    }
}