Pages

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);
    }
}

Friday, 6 December 2013

Facebook Hacker Cup 2014 - Qualification - Problem B - Basketball Game

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.StringTokenizer;

public class Solution {

    public static void main(String[] args) throws IOException {
        BufferedReader br
            =new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb=new StringBuffer();
        int t=Integer.parseInt(br.readLine());
        for(int i=0;i<t;i++){
            StringTokenizer st=new StringTokenizer(br.readLine());
            int n=Integer.parseInt(st.nextToken());
            int m=Integer.parseInt(st.nextToken());
            int p=Integer.parseInt(st.nextToken());
            Player[] pls=new Player[n];
            for(int j=0;j<n;j++){
                st=new StringTokenizer(br.readLine());
                pls[j]=new Player(st.nextToken(),
                      Integer.parseInt(st.nextToken()),
                      Integer.parseInt(st.nextToken()));
            }
            Arrays.sort(pls);
            LinkedList<PlayerPlaying> team1
                       =new LinkedList<PlayerPlaying>();
            LinkedList<PlayerPlaying> team1Sit
                       =new LinkedList<PlayerPlaying>();
            LinkedList<PlayerPlaying> team2
                       =new LinkedList<PlayerPlaying>();
            LinkedList<PlayerPlaying> team2Sit
                       =new LinkedList<PlayerPlaying>();
            for(int j=n-1,counter=1;j>-1;j--,counter++){
                if(j%2==0){
                    if(team1.size()<p)
                        team1.add(new PlayerPlaying
                            (pls[j].getName(),counter, 0));
                    else
                        team1Sit.add(new PlayerPlaying
                            (pls[j].getName(),counter, 0));
                }else{
                    if(team2.size()<p)
                        team2.add(new PlayerPlaying
                             (pls[j].getName(),counter, 0));
                    else
                        team2Sit.add(new PlayerPlaying
                            (pls[j].getName(),counter, 0));
                }
            }
            
            for(int j=0;j<m;j++){
                 Iterator<PlayerPlaying> it=team1.iterator();
                 while(it.hasNext()){
                     it.next().incPlayed();
                 }
                 it=team2.iterator();
                 while(it.hasNext()){
                     it.next().incPlayed();
                 }
                 if(!team1Sit.isEmpty()){
                     Collections.sort(team1Sit);
                     PlayerPlaying playteam1=team1Sit.removeLast();
                     Collections.sort(team1);
                     PlayerPlaying sitteam1=team1.remove();
                     team1.add(playteam1);
                     team1Sit.add(sitteam1);
                 }
                 if(!team2Sit.isEmpty()){
                     Collections.sort(team2Sit);
                     PlayerPlaying playteam2=team2Sit.removeLast();

                     Collections.sort(team2);
                     PlayerPlaying sitteam2=team2.remove();

                     team2.add(playteam2);

                     team2Sit.add(sitteam2);
                 }
            }
            sb.append("Case #").append(i+1).append(": ");
            String[]arrNames=new String[2*p];
            for(int j=0;j<p;j++){
                arrNames[j]=team1.remove().getName();
                arrNames[j+p]=team2.remove().getName();
            }
           Arrays.sort(arrNames);
           for(int j=0;j<arrNames.length;j++){
               if(j>0)
                sb.append(" ");
               sb.append(arrNames[j]);
           }
           sb.append("\n");
        }
        System.out.print(sb);
    }
 
    
}

class Player implements Comparable<Player>{
    private String name;
    private int height;
    private int shotPercentage;

    public Player(String str,int s,int h) {
        this.name=str;
        this.shotPercentage=s;
        this.height=h;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getShotPercentage() {
        return shotPercentage;
    }

    public void setShotPercentage(int shotPercentage) {
        this.shotPercentage = shotPercentage;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    

    @Override
    public int compareTo(Player o) {
        if(this.shotPercentage>o.getShotPercentage()){
            return 1;
        }
        else if(this.shotPercentage<o.getShotPercentage()){
            return -1;
        }else{
            if(this.height>o.getHeight()){
                return 1;
            }
            return -1;
        }
    }
    
}

class PlayerPlaying implements Comparable<PlayerPlaying> {
    private int draft;
    private int minPlayed;
    private String name;

    public PlayerPlaying(String name,int draft, int minPlayed) {
        this.name=name;
        this.draft = draft;
        this.minPlayed = minPlayed;
    }

    public int getDraft() {
        return draft;
    }

    public void setDraft(int draft) {
        this.draft = draft;
    }

    public int getMinPlayed() {
        return minPlayed;
    }

    public void setMinPlayed(int minPlayed) {
        this.minPlayed = minPlayed;
    }
    
    public void incPlayed(){
        minPlayed++;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    

    @Override
    public int compareTo(PlayerPlaying o) {
       if(minPlayed<o.getMinPlayed()){
           return 1;
       }
       if(minPlayed>o.getMinPlayed()){
           return -1;
       }else{
           if(draft<o.getDraft()){
               return 1;
           }
           return -1;
       }
    }
    
    
}

    

Facebook Hacker Cup 2014 - Qualification - Problem A - Square Detector

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

public class Solution { 
 
 public static void main(String[] args)
  throws IOException {
        BufferedReader br=new BufferedReader
               (new InputStreamReader(System.in));
        StringBuffer sb=new StringBuffer();
        int t=Integer.parseInt(br.readLine());
        for(int i=0;i<t;i++){
            int n=Integer.parseInt(br.readLine());
            boolean[][]arr=new boolean[n][n];
            for(int j=0;j<n;j++){
                String temp=br.readLine();
                for(int z=0;z<temp.length();z++){
                    if(temp.charAt(z)=='#'){
                        arr[j][z]=true;
                    }
                }
            }
            sb.append("Case #").append(i+1)
                  .append(": ");
            if(checkForSquare(arr)){
               sb.append("YES");
            }else{
               sb.append("NO");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
 
    static boolean checkForSquare(boolean[][]arr){
        int iStart=-1,jStart=-1;
        boolean flag=false;
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                if(arr[i][j]){
                    iStart=i;
                    jStart=j;
                    flag=true;
                    break;
                }
            }
            if(flag){
                break;
            }
        }
        if(iStart==-1&&jStart==-1){
            return false;
        }
        int iEnd=-1,jEnd=-1;
        flag=false;
        for(int i=arr.length-1;i>-1;i--){
            for(int j=arr[i].length-1;j>-1;j--){
                if(arr[i][j]){
                    iEnd=i;
                    jEnd=j;
                    flag=true;
                    break;
                }
            }
            if(flag){
                break;
            }
        }
        if(iStart==iEnd&&jStart==jEnd){
            return true;
        }
        if(iStart>iEnd || jStart>jEnd){
            return false;
        }
        if(iStart-iEnd!=jStart-jEnd){
            return false;
        }
        for(int i=iStart;i<=iEnd;i++){
            for(int j=jStart;j<=jEnd;j++){
                if(!arr[i][j]){
                    return false;
                }
            }
        }
        return true;
    }
}

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;
    }
}