Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int a[10][10];
- int x,y;
- int movevalid(int i,int j,int x)
- {
- switch(x)
- {
- case 1: if(a[i+1][j]==-1)
- return 0;
- else if(a[i+2][j]==-1)
- return 0;
- break;
- case 2: if(a[i-1][j]==-1)
- return 0;
- else if(a[i-2][j]==-1)
- return 0;
- break;
- case 3: if(a[i][j+1]==-1)
- return 0;
- else if(a[i][j+2]==-1)
- return 0;
- break;
- case 4: if(a[i][j-1]==-1)
- return 0;
- else if(a[i][j-2]==-1)
- return 0;
- break;
- }
- return 1;
- }
- void visit(int r,int c)
- {
- if(r>=x||r<0||c>=y||c<0)
- {
- }
- else if(a[r][c]==-1)
- {
- }
- else if(a[r][c]==0)
- {
- // cout<<r<<"\t"<<c<<"\n";
- }
- else
- {
- a[r][c]=0;
- //cout<<r<<"\t"<<c<<"<<<<====\n";
- //int k;
- if(movevalid(r,c,1)==1)
- visit(r+2,c+1);
- if(movevalid(r,c,1)==1)
- visit(r+2,c-1);
- if(movevalid(r,c,2)==1)
- visit(r-2,c+1);
- if(movevalid(r,c,2)==1)
- visit(r-2,c-1);
- if(movevalid(r,c,3)==1)
- visit(r+1,c+2);
- if(movevalid(r,c,4)==1)
- visit(r+1,c-2);
- if(movevalid(r,c,3)==1)
- visit(r-1,c+2);
- if(movevalid(r,c,4)==1)
- visit(r-1,c-2);
- //cout<<"COMPLETED FOR "<<r<<"\t"<<c<<"\n";
- // return k;
- }
- }
- int main()
- {
- cin>>x;
- int i,j,k;
- for(i=0;i<10;i++)
- {
- for(j=0;j<10;j++)
- a[i][j]=-1;
- }
- for(i=0;i<x;i++)
- {
- cin>>j>>k;
- while(k>0)
- {
- a[i][j+k-1]=1;
- k--;
- }
- }
- y=0;
- for(j=0;j<10;j++)
- {
- for(i=0;i<x;i++)
- {
- if(a[i][j]==1&&j>y)
- {
- y=j;
- break;
- }
- }
- }
- /*for(i=0;i<10;i++)
- {
- for(j=0;j<10;j++)
- cout<<a[i][j]<<"\t";
- cout<<"\n";
- }*/
- // cout<<"\n\n\n";
- y++;
- // cout<<x<<" "<<y<<"\n\n\n";
- //cout<<y<<"\n";
- visit(0,0);
- int count=0;
- for(i=0;i<10;i++)
- {
- for(j=0;j<10;j++)
- {
- if(a[i][j]==1)
- count++;
- }
- }
- cout<<count;
- }
Add Comment
Please, Sign In to add comment