Pages

Showing posts with label UVA. Show all posts
Showing posts with label UVA. Show all posts

Friday, 12 September 2014

UVA - 12718 - Dromicpalin Substrings

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        int cases = Integer.parseInt(br.readLine());
        for (int i = 0; i < cases; i++) {
            sb.append("Case ").append(i + 1).append(": ");
            sb.append(dromicpalinSubstrings(br.readLine()));
            sb.append("\n");
        }
        System.out.print(sb);
    }

    static int dromicpalinSubstrings(String str) {
        int counter = 0;
        for (int i = 0; i < str.length(); i++) {
            StringBuilder sb = new StringBuilder();
            int[] arr = new int[26];
            int odd = 0;
            for (int j = i; j < str.length(); j++) {
                char c = str.charAt(j);
                sb.append(c);
                arr[c - 'a']++;
                if (arr[c - 'a'] % 2 == 1) {
                    odd++;
                } else {
                    odd--;
                }
                int diff = j - i + 1;
                if ((diff % 2 == 0 && odd == 0) || (diff % 2 == 1 && odd == 1)) {
                    counter++;
                }

            }
        }
        return counter;
    }

}

Sunday, 22 December 2013

UVA - 12626 - I ❤ Pizza

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <string.h>

int min(int x,int y){
    if(x<y)
        return x;
    return y;
}

int main()
{
    int n=0;
    scanf("%d",&n);
    while(n--){
        int M=0,A=0,R=0,G=0,I=0,T=0,i=0,z=0;
        char str[600];
        scanf("%s",str);
        z=strlen(str);
        for(i=0;i<z;i++){
            if(str[i]=='M')
                M++;
            else if(str[i]=='A')
                A++;
            else if(str[i]=='R')
                R++;
            else if(str[i]=='G')
                G++;
            else if(str[i]=='I')
                I++;
            else if(str[i]=='T')
                T++;
        }
        int answer=min(min(min(min(min(M,A/3),R/2),G),I),T);
        printf("%d\n",answer);
    }
    return 0;
}


UVA - 12704 - Little Masters

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>

int main()
{
    int n=0;
    scanf("%d",&n);
    while(n--){
        float x=0,y=0,r=0;
        scanf("%f %f %f",&x,&y,&r);
        double s=sqrt(x*x+y*y);
        printf("%.2f %.2f\n",r-s,r+s);
    }
    return 0;
}

UVA - 12700 - Banglawash

#include <stdio.h>

int main()
{
    int n=0,cases=1;
    scanf("%d",&n);
    while(n--){
        int matches=0,i=0;
        scanf("%d",&matches);
            char str[11];
            scanf("%s",str);
            int A=0,B=0,T=0,W=0;
            for(i=0;i<matches;i++){
                if(str[i]=='A')
                    A++;
                else if(str[i]=='B')
                    B++;
                else if(str[i]=='T')
                    T++;
                else if(str[i]=='W')
                    W++;
            }
            if((B+A==matches)&& B!=0)
                printf("Case %d: BANGLAWASH\n",cases);
            else if((W+A==matches) && W!=0)
                printf("Case %d: WHITEWASH\n",cases);
            else if(A==matches)
                printf("Case %d: ABANDONED\n",cases);
            else if(B>W)
                printf("Case %d: BANGLADESH %d - %d\n",cases,B,W);
            else if(B<W)
                 printf("Case %d: WWW %d - %d\n",cases,W,B);
            else if(B==W)
                printf("Case %d: DRAW %d %d\n",cases,B,T);
            cases++;
    }
    return 0;
}

Monday, 16 December 2013

UVA - 12708 - GCD The Largest

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n=0;
    long x=0;
    scanf("%d",&n);
    while(n--){
        scanf("%ld",&x);
        if(x%2!=0){
            x--;
        }
        printf("%ld\n",x/2);
    }
    return 0;
}

UVA - 12592 - Slogan Learning of Princess

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb=new  StringBuffer();
        int cases = Integer.parseInt(br.readLine());
        HashMap<String,String> hm=new HashMap<String, String>();
        for (int i = 0; i < cases; i++) {
            hm.put(br.readLine().trim(),br.readLine().trim());
        }
        cases = Integer.parseInt(br.readLine());
        for (int i = 0; i < cases; i++) {
            sb.append(hm.get(br.readLine().trim())).append("\n");
        }
        System.out.print(sb);
    }
}

Saturday, 13 July 2013

UVA - 12602 - Nice Licence Plates

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int cases=Integer.parseInt(br.readLine());
        for(int i=0;i<cases;i++){
            String str=br.readLine();
            int n1=(str.charAt(0)-'A')*26*26;
            n1+=(str.charAt(1)-'A')*26;
            n1+=(str.charAt(2)-'A');
            int n2=(str.charAt(4)-'0')*1000;
            n2+=(str.charAt(5)-'0')*100;
            n2+=(str.charAt(6)-'0')*10;
            n2+=(str.charAt(7)-'0');
            if(Math.abs(n1-n2)>100){
                sb.append("not nice\n");
            }else{
                sb.append("nice\n");
            }
        }
        System.out.print(sb);
    }

}

UVA - 12611 - Beautiful Flag

#include <stdio.h>

int main()
{
    int cases,i=1, r;
    scanf("%d",&cases);
    while(cases--){
        scanf("%lf",&r);
        printf("Case %d:\n",i);
        printf("%.0lf %.0lf\n",-2.25*r,1.5*r);
        printf("%.0lf %.0lf\n",2.75*r,1.5*r);
        printf("%.0lf %.0lf\n",2.75*r,-1.5*r);
        printf("%.0lf %.0lf\n",-2.25*r,-1.5*r);
        i++;
    }
    return 0;
}

UVA - 231 - Testing the CATCHER

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int i=1;
        while(true){
            int n=Integer.parseInt(br.readLine());
            if(n<0)
                break;
            if(i>1)
                sb.append("\n");
            Vector<Integer> vec=new Vector<Integer>();
            vec.add(n);
            while(true){
                n=Integer.parseInt(br.readLine());
                if(n<0)
                    break;
                vec.add(n);
            }
            sb.append("Test #").append(i).append(":\n");
            sb.append("  maximum possible interceptions: ").append(LDS(vec)).append("\n");
            i++;
        }
        System.out.print(sb);
    }

    static int LDS(Vector<Integer> vec){
        int[]arr=new int[vec.size()];
        arr[0]=1;
        int maxL=0;
        for(int i=1;i<arr.length;i++){
          int maX=0;
          for(int j=0;j<i;j++){
            if(vec.get(j)>vec.get(i) &&arr[j]>maX){
              maX=arr[j];
            }
          }
          arr[i]=maX+1;
          if(arr[i]>maxL){
              maxL=arr[i];
          }
        }
        return maxL;
    }
}

Friday, 28 June 2013

UVA - 11364 - Parking

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int cases,n,val;
    scanf("%d",&cases);
    while(cases--){
        scanf("%d",&n);
        int max=0,min=100;
        while(n--){
            scanf("%d",&val);
            if(val>max)
                max=val;
            if(val<min)
                min=val;
        }
        printf("%d\n",2*(max-min));
    }
    return 0;
}

UVA - 12279 - Emoogle Balance

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,val,i=1;
    while(1){
        scanf("%d",&n);
        if(n==0){
            break;
        }
        int treat=0,party=0;
        while(n--){
            scanf("%d",&val);
            if(val==0){
                treat++;
            }else{
                party++;
            }
        }
        printf("Case %d: %d\n",i,(party-treat));
        i++;
    }
    return 0;
}

UVA - 10992 - The Ghost of Programmers

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        boolean first=true;
        while(true){
            BigInteger bg=new BigInteger(br.readLine());
            if(bg.compareTo(BigInteger.ZERO)==0){
                break;
            }
            if(!first){
                sb.append("\n");
            }
            sb.append(bg).append("\n");
            answer(bg, sb);
            first=false;
        }
        System.out.print(sb);
    }
   
    static void answer(BigInteger bg,StringBuffer sb){
        boolean flag=false;
        if(bg.compareTo(BigInteger.valueOf(2147))==1){
            BigInteger leap=bg.add(BigInteger.ZERO);
            bg=bg.subtract(BigInteger.valueOf(2148));
            if((bg.mod(BigInteger.valueOf(2))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Tanveer Ahsan!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(5))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Shahriar Manzoor!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(7))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Adrian Kugel!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(11))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Anton Maydell!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(15))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Derek Kisman!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(20))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Rezaul Alam Chowdhury!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(28))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Jimmy Mardell!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(36))).compareTo(BigInteger.ZERO)==0){
                sb.append("Ghost of Monirul Hasan!!!\n");
                flag=true;
            }
            if((bg.mod(BigInteger.valueOf(4))).compareTo(BigInteger.ZERO)==0){
                if((leap.mod(BigInteger.valueOf(400))).compareTo(BigInteger.ZERO)==0){
                    sb.append("Ghost of K. M. Iftekhar!!!\n");
                    flag=true;
                }
                if(!((leap.mod(BigInteger.valueOf(100))).compareTo(BigInteger.ZERO)==0)){
                    sb.append("Ghost of K. M. Iftekhar!!!\n");
                    flag=true;
                }
            }
        }
        if(!flag){
            sb.append("No ghost will come in this year\n");
        }
    }
}

Thursday, 27 June 2013

UVA - 12060 - All Integer Average

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int cases=1;
        while (true) {
            StringTokenizer st=new StringTokenizer(br.readLine());
            int sum=0;
            int n=Integer.parseInt(st.nextToken());
            if(n==0){
                break;
            }
            sb.append("Case ").append(cases).append(":\n");
            cases++;
            while(st.hasMoreTokens()){
                sum+=Integer.parseInt(st.nextToken());
            }
            if(sum<0){
                if(sum%n==0){
                    sb.append("- ").append(Math.abs(sum/n)).append("\n");
                }else{
                    int val=(Math.abs(sum/n));
                    String qu="";
                    if(val!=0)
                        qu+=val;
                    int num=sum%n;
                    int gcd=gcd(num,n);
                    String numS=(Math.abs(num/gcd))+"";
                    String denS=Math.abs(n/gcd)+"";
                    for(int i=0;i<qu.length()+denS.length()-numS.length()+2;i++){
                        sb.append(" ");
                    }
                    sb.append(numS).append("\n");
                   
                    sb.append("- ");
                    sb.append(qu);
                    for(int i=0;i<denS.length();i++){
                        sb.append("-");
                    }
                    sb.append("\n");
                   
                    for(int i=0;i<qu.length()+2;i++){
                        sb.append(" ");
                    }
                    sb.append(denS).append("\n");
                }
            }else{
                if(sum%n==0){
                    sb.append(sum/n).append("\n");
                }else{
                    int val=(Math.abs(sum/n));
                    String qu="";
                    if(val!=0)
                        qu+=val;
                    int num=sum%n;
                    int gcd=gcd(num,n);
                    String numS=(Math.abs(num/gcd))+"";
                    String denS=(n/gcd)+"";
                    for(int i=0;i<qu.length()+denS.length()-numS.length();i++){
                        sb.append(" ");
                    }
                    sb.append(numS).append("\n");
                   
                    sb.append(qu);
                    for(int i=0;i<denS.length();i++){
                        sb.append("-");
                    }
                    sb.append("\n");
                   
                    for(int i=0;i<qu.length();i++){
                        sb.append(" ");
                    }
                    sb.append(denS).append("\n");
                }
            }
        }
        System.out.print(sb);
    }

    static int gcd(int x,int y){
        if(y==0){
            return x;
        }
        return gcd(y,x%y);
    }
}

UVA - 594 - One Little, Two Little, Three Little Endians

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        String m = "";
        while ((m = br.readLine()) != null) {
            StringBuilder temp=null ;
            if(m.charAt(0)=='-'){
                String str=m.substring(1);
                str= Long.toBinaryString(Long.parseLong(str));
                temp = new StringBuilder(twoSComplement(str));
            }else{
                temp = new StringBuilder(Long.toString(Integer.parseInt(m), 2));
            }
            sb.append(m).append(" converts to ").append(operation(temp)).append("\n");
        }
        System.out.print(sb);
    }

    static String operation(StringBuilder temp) {
        while (temp.length() < 32) {
            temp.insert(0, "0");
        }
        StringBuilder ans = new StringBuilder();
        for (int i = 0; i < 8; i++) {
            ans.append(temp.charAt(i + 24));
        }
        for (int i = 0; i < 8; i++) {
            ans.append(temp.charAt(i + 16));
        }
        for (int i = 0; i < 8; i++) {
            ans.append(temp.charAt(i + 8));
        }
        for (int i = 0; i < 8; i++) {
            ans.append(temp.charAt(i));
        }
        return StringMan(ans);
    }

    static String StringMan(StringBuilder temp) {
        if (temp.charAt(0) == '1') {
            StringBuilder oneComplement = new StringBuilder();
            for (int i = 0; i < temp.length(); i++) {
                if (temp.charAt(i) == '0') {
                    oneComplement.append('1');
                } else {
                    oneComplement.append('0');
                } 
            }
            long h=Long.parseLong(oneComplement.toString(),2)+1;
            return "-"+h;
        }
        return Integer.parseInt(temp.toString(), 2) + "";
    }
   
    static String twoSComplement(String temp){
            StringBuilder oneComplement = new StringBuilder();
            while(temp.length()<32){
                temp='0'+temp;
            }
            for (int i = 0; i < temp.length(); i++) {
                if (temp.charAt(i) == '0') {
                    oneComplement.append('1');
                } else {
                    oneComplement.append('0');
                } 
            }
            long h=Long.parseLong(oneComplement.toString(),2)+1;
            return Long.toBinaryString(h);
    }
}

Monday, 24 June 2013

UVA - 10433 - Automorphic Numbers

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;

public class Main{

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();  
        String m="";
        while((m=br.readLine())!=null){
            int val=checkBg(m);
            if(val==0){
                sb.append("Not an Automorphic number.\n");
            }else{
                sb.append(String.format("Automorphic number of %d-digit.\n", val));
            }
        }
        System.out.print(sb);
    }
   
    static int checkBg(String m){
       
        BigInteger bg=new BigInteger(m);
        int n=m.length();
        String str=bg.modPow(BigInteger.valueOf(2), BigInteger.TEN.pow(n)).toString();
        if(str.equals("0") ||str.equals("1"))
            return 0;
        while(str.length()!=n){
           str="0"+str;
        }
        for(int i=0;i<n;i++){
            if(str.charAt(i)!=m.charAt(i))
                return 0;
        }
        return n;
    }
}
  

Thursday, 13 June 2013

UVA - 11952 - Arithmetic

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        int cases =Integer.parseInt(br.readLine());
        for(int i=0;i<cases;i++){
            StringTokenizer st=new StringTokenizer(br.readLine());
            int x=Integer.parseInt(st.nextToken());
            st.nextToken();
            int y=Integer.parseInt(st.nextToken());
            st.nextToken();
            int z=Integer.parseInt(st.nextToken());
            sb.append(getbase(x,y,z)).append("\n");
            String m="";
        }
         
        System.out.print(sb);
    }
  
    static int getbase(int x,int y,int z){
        if(checkones(x+"") && checkones(y+"") && checkones(z+"")){
            if((x+"").length()+(y+"").length()==(z+"").length())
                return 1;
        }
        for(int i=Math.max(Math.max(minbase(x+""),minbase(y+"")),minbase(z+""));i<19;i++){
            int x2=Integer.parseInt(x+"",i);
            int y2=Integer.parseInt(y+"",i);
            int z2=Integer.parseInt(z+"",i);
            if(x2+y2==z2){
                return i;
            }
        }
        return 0;
    }
  
    static boolean checkones(String val){
        for(int i=0;i<val.length();i++){
            if(val.charAt(i)!='1')
                return false;
        }
        return true;
    }
    static int minbase(String val){
       int max=1;
       for(int i=0;i<val.length();i++){
           int temp=val.charAt(i)-'0';
           if(temp>max)
               max=temp;
       }
       return max+1;
    }
}

Sunday, 31 March 2013

UVA - 10341 - Solve It

//Root finding algorithm using newton method
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        String m="";
        while((m=br.readLine())!=null){
            if("#".equals(m.trim()))
                break;
            StringTokenizer st=new StringTokenizer(m);
            int p=Integer.parseInt(st.nextToken()),
                    q=Integer.parseInt(st.nextToken()),
                    r=Integer.parseInt(st.nextToken()),
                    s=Integer.parseInt(st.nextToken()),
                    t=Integer.parseInt(st.nextToken()),
                    u=Integer.parseInt(st.nextToken());
            if(function(0, p, q, r, s, t, u) *function(1, p, q, r, s, t, u)>0){
               sb.append("No solution\n");
            }else{
               sb.append(String.format("%.4f\n",netwonMethod(p, q, r, s, t, u)));
            }
        }
        System.out.print(sb);
    }
    static double function(double i,int p,int q,int r,
                            int s,int t,int u){
        return 1.0*p*Math.exp(-i)+1.0*q*Math.sin(i)
                        +1.0*r*Math.cos(i)+1.0*s*Math.tan(i)+t*i*i+u;
    }
  
    static double dfunction(double i,int p,int q,int r,
                            int s,int t,int u){
        return -1.0*p*Math.exp(-i)+1.0*q*Math.cos(i)
                        -1.0*r*Math.sin(i)+1.0*s/(Math.cos(i)*Math.cos(i))+2*t*i;
    }
  
    static double netwonMethod(int p,int q,int r,
                            int s,int t,int u){
        if(function(0, p, q, r, s, t, u) ==0)
            return 0;
        double ans=0.5;
        while (true){
            double newans = ans - function(ans, p, q, r, s, t, u)/dfunction(ans, p, q, r, s, t, u);
            if (Math.abs(newans-ans) < eps)
                return ans;
            ans=newans;
        }
    }
    static double eps=1E-7;
}


Thursday, 28 March 2013

UVA - 10363 - Tic Tac Toe


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        int cases = Integer.parseInt(br.readLine().trim());
        for (int i = 0; i < cases; i++) {
            if (i > 0) {
                br.readLine();
            }
            int counterX = 0, counterO = 0;
            String str = "";
            boolean[][] arrX = new boolean[3][3];
            boolean[][] arrO = new boolean[3][3];
            for (int j = 0; j < 3; j++) {
                str = br.readLine();
                for (int z = 0; z < 3; z++) {
                    if (str.charAt(z) == 'X') {
                        counterX++;
                        arrX[j][z] = true;
                    }
                    if (str.charAt(z) == 'O') {
                        counterO++;
                        arrO[j][z] = true;
                    }
                }
            }
            if (win(arrX) && win(arrO)) {
                sb.append("no\n");
            }else if (win(arrO) &&counterX!=counterO) {
                sb.append("no\n");
            }else if (win(arrX) &&counterX!=counterO+1) {
                sb.append("no\n");
            }else {
                if (counterO == counterX) {
                    sb.append("yes\n");
                } else if (counterO + 1 == counterX) {
                    sb.append("yes\n");
                } else {
                    sb.append("no\n");
                }
            }
        }
        System.out.print(sb);
    }

    static boolean win(boolean[][] arr) {
        for (int i = 0; i < 3; i++) {
            boolean flag = true;
            for (int j = 0; j < 3; j++) {
                flag &= arr[i][j];
            }
            if (flag) {
                return true;
            }
        }
        for (int i = 0; i < 3; i++) {
            boolean flag = true;
            for (int j = 0; j < 3; j++) {
                flag &= arr[j][i];
            }
            if (flag) {
                return true;
            }
        }
        if (arr[0][0] && arr[1][1] && arr[2][2]) {
            return true;
        }
        if (arr[2][0] && arr[1][1] && arr[0][2]) {
            return true;
        }
        return false;
    }
}


Thursday, 14 March 2013

Sunday, 10 March 2013

UVA - 320 - Border


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int cases = Integer.parseInt(br.readLine());
        for (int i = 0; i < cases; i++) {
            sb.append("Bitmap #").append(i+1).append("\n");
            StringTokenizer st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            char[][] arr = new char[32][32];
            for (int j = 0; j < 32; j++) {
                for (int z = 0; z < 32; z++) {
                    arr[j][z] = '.';
                }
            }
            StringBuilder str = new StringBuilder(br.readLine());
            for (int j = 0; j < str.length(); j++) {
                 if (str.charAt(j) == 'E') {
                    x++;
                    arr[x-1][y-1] = 'X';
                   
                } else if (str.charAt(j) == 'W') {
                        x--;
                        arr[x][y] = 'X';
                       
                } else if (str.charAt(j) == 'N') {
                        y++;
                        arr[x][y-1] = 'X';
                } else if (str.charAt(j) == 'S') {
                    y--;
                    arr[x-1][y] = 'X';
                }
            }
            for (int j = 31; j >-1; j--) {
                for (int z = 0; z < 32; z++) {
                    sb.append(arr[z][j]);
                }
                sb.append("\n");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}