Friday, May 27, 2016

Published May 27, 2016 by with 0 comment

uva problem 10963 - The Swallowing Ground - solution

#include<iostream>
using namespace std;

int main()
{
    int t,w;
    cin>>t;
    while (t--)
    {
        cin>>w;
        int y1,y2,y[w],flag=1;
        for (int i=0;i<w;i++)
        {
            cin>>y1>>y2;
            y[i]=y1-y2;
            if (y[0]!=y[i]) flag=0;
        }
        if (flag) cout<<"yes"<<endl;
        else cout<<"no"<<endl;
        if (t) cout<<endl;
    }
    return 0;
}
Read More
      edit
Published May 27, 2016 by with 2 comments

uva 10004 - Bicoloring -solution

#include<cstdio>
#include<queue>
#include<vector>
using namespace std;

vector <int>v[200];

int bfs(int node)
{
    int color[200]={0};
    int visit[200]={0};
    queue <int> q;
    q.push(node);
    color[node]=1;
    while (!q.empty())
    {
        int f=q.front();
        q.pop();
        int d=color[f]==1?2:1;
        int l=v[f].size();
        for (int i=0;i<l;i++)
        {
            node=v[f][i];
            if (color[f]==color[node]) return 0;
            if (!visit[node])
            {
                q.push(node);
                color[node]=d;
                visit[node]=1;
            }
        }
    }
    return 1;
}

int main()
{
    int n,l,a,b;
    while (1)
    {
        scanf("%d",&n);
        if (n==0) break;
        scanf("%d",&l);
        for (int i=0;i<l;i++)
        {
           scanf("%d%d",&a,&b);
           v[a].push_back(b);
           v[b].push_back(a);
        }
        if (bfs(0)) printf("BICOLORABLE.\n");
        else printf("NOT BICOLORABLE.\n");
        for (int i=0;i<n;i++) v[i].clear();
    }
    return 0;
}
Read More
      edit
Published May 27, 2016 by with 0 comment

UVA problem 706 - LC-Display - solution

#include<cstdio>
#include<string.h>
using namespace std;

int main()
{
    int s;
    char n[20],ch;
    while (1)
    {
        scanf("%d %s",&s,n);
        if (s==0 && n[0]=='0') break;
        int l=strlen(n);
        for (int i=0;i<l;i++)
        {
            if (i) printf(" ");
            printf(" ");
            if (n[i]=='1' || n[i]=='4') ch=' ';
            else ch='-';
            for (int j=0;j<s; j++) printf("%c",ch);
            printf(" ");
        }
        printf("\n");
        for (int k=0;k<s;k++)
        {
            for (int i=0;i<l;i++)
            {
                if (i) printf(" ");
                if (n[i]=='1' || n[i]=='2' || n[i]=='3' || n[i]=='7')
                printf(" ");
                else printf("|");
                for (int j=0;j<s;j++) printf(" ");
                if (n[i]=='5' || n[i]=='6') printf(" ");
                else printf("|");
            }
            printf("\n");
        }
        for (int i=0;i<l;i++)
        {
            if (i) printf(" ");
            printf(" ");
            if (n[i]=='0' || n[i]=='1' || n[i]=='7') ch=' ';
            else ch='-';
            for (int j=0;j<s; j++) printf("%c",ch);
            printf(" ");
        }
        printf("\n");
        for (int k=0;k<s;k++)
        {
            for (int i=0;i<l;i++)
            {
                if (i) printf(" ");
                if (n[i]=='0' || n[i]=='2' || n[i]=='6' ||n[i]=='8')
                printf("|");
                else printf(" ");
                for (int j=0;j<s;j++) printf(" ");
                if (n[i]=='2') printf(" ");
                else printf("|");
            }
            printf("\n");
        }
        for (int i=0;i<l;i++)
        {
            if (i) printf(" ");
            printf(" ");
            if (n[i]=='1' || n[i]=='4' || n[i]=='7') ch=' ';
            else ch='-';
            for (int j=0;j<s; j++) printf("%c",ch);
            printf(" ");
        }
        printf("\n\n");
    }
    return 0;
}
Read More
      edit

Monday, May 16, 2016

Published May 16, 2016 by with 0 comment

UVA 392 : Polynomial Showdown - Solution

#include<cstdio>
using namespace std;

int main()
{
    int cof[9];
    while (1)
    {
        for (int i=8;i>-1;i--)
        {
            if (scanf("%d",&cof[i])!=1) return 0;
        }
        int flag=1;
        for (int i=8;i>0;i--)
        {
            if (cof[i]!=0)
            {
                if (flag)
                {
                    if (cof[i]==1) printf("x");
                    else if (cof[i]>1)
                    printf("%dx",cof[i],i);
                    if (cof[i]==-1) printf("-x");
                    else if (cof[i]<-1)
                    printf("-%dx",-1*cof[i]);
                    if (i!=1) printf("^%d",i);
                    flag=0;
                }
                else
                {
                    if (cof[i]==1) printf(" + x",i);
                    else if (cof[i]>1)
                    printf(" + %dx",cof[i],i);
                    if (cof[i]==-1) printf(" - x",i);
                    else if (cof[i]<-1)
                    printf(" - %dx",-1*cof[i]);
                    if (i!=1) printf("^%d",i);
                }
            }
        }
        if (flag)
        {
            printf("%d",cof[0]);
        }
        else
        {
            if (cof[0]>0) printf(" + %d",cof[0]);
            else if (cof[0]<0) printf(" - %d",-1*cof[0]);
        }
        printf("\n");
    }
    return 0;
}
Read More
      edit

Saturday, May 14, 2016

Published May 14, 2016 by with 0 comment

UVA 661 - Blowing Fuses : Solution

#include<iostream>
using namespace std;

int main()
{
     int n,m,capacity,seq=1;
     while (cin>>n>>m>>capacity)
     {
          if (n==0 && m==0 && capacity==0) return 0;
          int swis[21]={0};
          int c[21];
          for (int i=1;i<=n;i++) cin>>c[i];
          int max=0,sum=0;
          for (int i=0;i<m;i++)
          {
               int t;
               cin>>t;
               if (swis[t]==0)
               {
                sum+=c[t];
                swis[t]=1;
               }
               else
               {
                    sum-=c[t];
                    swis[t]=0;
                }
               if (sum>max) max=sum;
          }
          cout<<"Sequence "<<seq++<<endl;
          
          if (max>capacity)
            cout<<"Fuse was blown."<<endl;
          else
           cout<<"Fuse was not blown."<<endl<<"Maximal power consumption was "<<max<<" amperes."<<endl;
          cout<<endl;
     }
 return 0;
}
Read More
      edit
Published May 14, 2016 by with 0 comment

UVA 621 Secret Research - solution

#include<iostream>
#include<string>

using namespace std;
int main()
{
    int n;
    string s;
    cin>>n;
    while (n--)
    {
        cin>>s;
        if(s=="1" || s=="4" || s=="78") cout<<"+"<<endl;
        else if(s[s.length()-1]=='5' && s[s.length()-2]=='3')
        cout<<"-"<<endl;
        else if(s[s.length()-1]=='4' && s[0]=='9')
        cout<<"*"<<endl;
        else if(s[0]=='1' && s[1]=='9' && s[2]=='0')
        cout<<"?"<<endl;
     }
     return 0;
}
Read More
      edit

Friday, May 13, 2016

Published May 13, 2016 by with 0 comment

UVA 696 : How Many Knights -Solution

#include<cstdio>
using namespace std;

int main()
{
     int m,n;
     while (scanf("%d%d",&m,&n)!=EOF)
         {
          if (m==0 && n==0) return 0;
          int ans,r,c;
          r=m;
          c=n;
          if (m>n)
          {
               int t=m;
               m=n;
               n=t;
          }
          if (m==1) ans=n;
          else if (m==2)
            ans =n/4*4+(n%4==1)*2+(n%4>1)*4;
          else ans =(m*n+1)/2;
          printf("%d knights may be placed on a %d row %d column board.\n",ans,r,c);
     }
    return 0;
}
Read More
      edit
Published May 13, 2016 by with 0 comment

UVA 10196 -Check the Check : Solution

#include<cstdio>
#include<string.h>
using namespace std;

char board[8][9];
int check(int wi, int wj,int bi, int bj)
{
     int i,j;
     i=wi;
     j=wj;
     while (--j>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='r')  return 1;
      else break;
     }
     j=wj;
     while (++j<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='r')  return 1;
      else break;
     }
     j=wj;
     while (--i>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='r')  return 1;
      else break;
     }
     i=wi;
     while (++i<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='r')  return 1;
      else break;
     }
     i=wi;
     while (--j>=0 && --i>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='b')  return 1;
      else break;
     }
     i=wi;
     j=wj;
     while (--j>=0 && ++i<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='b')  return 1;
      else break;
     }
     i=wi;
     j=wj;
     while (++j<8 && --i>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='b')  return 1;
      else break;
     }
     i=wi;
     j=wj;
     while (++j<8 && ++i<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='q' || board[i][j]=='b')  return 1;
      else break;
     }
     i=wi-1;
     j=wj;
     if (i>=0)
     {
      if (j-1>=0 && board[i][j-1]=='p') return 1;
      if (j+1<8 && board[i][j+1]=='p') return 1;
     }
     i++;
     if (i-2>=0)
     {
      if (j-1>=0 && board[i-2][j-1]=='n') return 1;
      if (j+1<8 && board[i-2][j+1]=='n') return 1;
     }
     if (i+2<8)
     {
      if (j-1>=0 && board[i+2][j-1]=='n') return 1;
      if (j+1<8 && board[i+2][j+1]=='n') return 1;
     }
     if (j-2>=0)
     {
      if (i-1>=0 && board[i-1][j-2]=='n') return 1;
      if (i+1<8 && board[i+1][j-2]=='n') return 1;
     }
     if (j+2<8)
     {
      if (i-1>=0 && board[i-1][j+2]=='n') return 1;
      if (i+1<8 && board[i+1][j+2]=='n') return 1;
     }
     // black king check checking
     i=bi;
     j=bj;
     while (--j>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='R')  return 2;
      else break;
     }
     j=bj;
     while (++j<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='R')  return 2;
      else break;
     }
     j=bj;
     while (--i>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='R')  return 2;
      else break;
     }
     i=bi;
     while (++i<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='R')  return 2;
      else break;
     }
     i=bi;
     while (--j>=0 && --i>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='B')  return 2;
      else break;
     }
     i=bi;
     j=bj;
     while (--j>=0 && ++i<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='B')  return 2;
      else break;
     }
     i=bi;
     j=bj;
     while (++j<8 && --i>=0)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='B')  return 2;
      else break;
     }
     i=bi;
     j=bj;
     while (++j<8 && ++i<8)
     {
      if (board[i][j]=='.') continue;
      if (board[i][j]=='Q' || board[i][j]=='B')  return 2;
      else break;
     }
     i=bi+1;
     j=bj;
     if (i<8)
     {
      if (j-1>=0 && board[i][j-1]=='P') return 2;
      if (j+1<8 && board[i][j+1]=='P') return 2;
     }
     i--;
     if (i-2>=0)
     {
      if (j-1>=0 && board[i-2][j-1]=='N') return 2;
      if (j+1<8 && board[i-2][j+1]=='N') return 2;
     }
     if (i+2<8)
     {
      if (j-1>=0 && board[i+2][j-1]=='N') return 2;
      if (j+1<8 && board[i+2][j+1]=='N') return 2;
     }
     if (j-2>=0)
     {
      if (i-1>=0 && board[i-1][j-2]=='N') return 2;
      if (i+1<8 && board[i+1][j-2]=='N') return 2;
     }
     if (j+2<8)
     {
      if (i-1>=0 && board[i-1][j+2]=='N') return 2;
      if (i+1<8 && board[i+1][j+2]=='N') return 2;
     }
     return 0;
     
    }

    int main()
    {
     int test=1;
     while (1)
     {
      for (int i=0;i<8;i++)
        scanf("%s",board[i]);
      int wi,wj,bi,bj,blank=0;
      for (int i=0;i<8;i++)
       for (int j=0;j<8;j++)
       {
        if (board[i][j]=='.') blank++;
        else if (board[i][j]=='K')
        {
         wi=i;
         wj=j;
        }
        else if (board[i][j]=='k')
        {
         bi=i;
         bj=j;
        }
       }
      if (blank==64) break;
      int c=check(wi,wj,bi,bj);
      if (c==1) printf("Game #%d: white king is in check.\n",test++);
      else if (c==2) printf("Game #%d: black king is in check.\n",test++);
      else printf("Game #%d: no king is in check.\n",test++);
     }
     return 0;
}
Read More
      edit