Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.StringTokenizer;
- public class solverRR {
- public static void main (String[] args) {
- FastScanner reader = new FastScanner();
- int players = reader.nextInt();
- int operations = reader.nextInt();
- Node[] playerInf = new Node[players];
- ArrayList<ArrayList<Integer>> guilds = new ArrayList <>();
- int[] expBank = new int[players];
- for (int i = 0; i < players; i++) {
- playerInf[i] = new Node(i,0);
- ArrayList<Integer> tmp = new ArrayList <>();
- tmp.add(i);
- guilds.add(tmp);
- expBank[i]=0;
- }
- int curExp;
- int tmp1;
- int tmp2;
- for (int i = 0; i < operations; i++) {
- switch (reader.next()) {
- case "join": {
- tmp1 = playerInf[reader.nextInt()-1].getGuild();
- tmp2 = playerInf[reader.nextInt()-1].getGuild();
- if (tmp1 == tmp2) {
- break;
- }
- curExp = expBank[tmp1];
- expBank[tmp1] = 0;
- for (int idx : guilds.get(tmp1)) {
- playerInf[idx].addExp(curExp);
- }
- curExp = expBank[tmp2];
- expBank[tmp1] = 0;
- for (int idx : guilds.get(tmp2)) {
- guilds.get(tmp1).add(idx);
- playerInf[idx].changeGuild(tmp1);
- playerInf[idx].addExp(curExp);
- }
- break;
- }
- case "add": {
- tmp1 = playerInf[reader.nextInt()-1].getGuild();
- curExp = reader.nextInt();
- expBank[tmp1]+=curExp;
- break;
- }
- case "get": {
- tmp1 = reader.nextInt()-1;
- System.out.print(playerInf[tmp1].getExp()+expBank[playerInf[tmp1].getGuild()]+"\n");
- break;
- }
- }
- }
- }
- static class FastScanner {
- BufferedReader br;
- StringTokenizer st;
- public FastScanner() {
- br = new BufferedReader(new InputStreamReader(System.in));
- }
- String next() {
- while (st == null || !st.hasMoreElements()) {
- try {
- st = new StringTokenizer(br.readLine());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return st.nextToken();
- }
- int nextInt() {
- return Integer.parseInt(next());
- }
- }
- }
- class Node {
- private int guild;
- private int exp;
- Node(int b, int c) {
- this.guild = b;
- this.exp = c;
- }
- int getGuild(){
- return guild;
- }
- int getExp(){
- return exp;
- }
- void changeGuild(int x) {
- guild = x;
- }
- void addExp(int x) {
- exp += x;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement