Advertisement
Guest User

Untitled

a guest
May 29th, 2016
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.88 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. public class Main {
  5.    
  6.  static int solve(ArrayList<Character> a) {
  7.         ArrayList<Integer> b = new ArrayList<Integer>();
  8.         for (int i = 0; i < a.size(); ++i)
  9.             b.add(i);
  10.         ArrayList<Integer> nb = new ArrayList<Integer>();
  11.         while (b.size() > 1) {
  12.               nb = new ArrayList<Integer>();
  13.               for (int i = 0; i < b.size(); i += 2) {
  14.                   char c1 = a.get(b.get(i));
  15.                   char c2 = a.get(b.get(i+1));
  16.                   if ((c1 == c2) || ((c1 == 'P') && (c2 == 'R')) || ((c1 == 'R') && (c2 == 'S')) || ((c1 == 'S') && (c2 == 'P'))) {
  17.                       nb.add(b.get(i));
  18.                   } else {
  19.                       nb.add(b.get(i+1));
  20.                   }
  21.               }
  22.               b = nb;
  23.           }
  24.         return b.get(0);
  25.     }
  26.    
  27.   public static void main(String[] args) {
  28.       long my_id = message.MyNodeId();
  29.       long n = rps.GetN();
  30.       int MASTER = 64;
  31.       int p = 1;
  32.       for (int i = 0; i < n; ++i)
  33.           p += p;
  34.       MASTER = Math.min(MASTER, p);
  35.       if (my_id < MASTER) {
  36.           long use = p / MASTER;
  37.           long start = use*my_id;
  38.           long finish = start + use;
  39.           ArrayList<Character> a = new ArrayList<Character>();
  40.           ArrayList<Integer> b = new ArrayList<Integer>();
  41.           for (int i = (int)start; i < finish; ++i) {
  42.               a.add(rps.GetFavoriteMove(i));
  43.               b.add(i);
  44.           }
  45.          int res = solve(a);
  46.          message.PutChar(MASTER,a.get(res));
  47.          message.PutInt(MASTER, b.get(res));
  48.          message.Send(MASTER);
  49.       }
  50.       if (my_id == MASTER) {
  51.           ArrayList<Character> a = new ArrayList<Character>();
  52.           ArrayList<Integer> b = new ArrayList<Integer>();
  53.           for (int i = 0; i < MASTER; ++i) {
  54.               a.add('a');
  55.               b.add(0);
  56.           }
  57.           int cnt = 0;
  58.           while (cnt < MASTER) {
  59.               int node = message.Receive(-1);
  60.               cnt++;
  61.               char t1 = message.GetChar(node);
  62.               int t2 = message.GetInt(node);
  63.               a.set(node, t1);
  64.               b.set(node,t2);
  65.           }
  66.           int res = solve(a);
  67.           System.out.println(b.get(res));
  68.       }
  69.   }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement