Untitled
unknown
plain_text
a year ago
2.9 kB
7
Indexable
class UserSolution { LinkedList list[][]; Soldier soldier[]; public void init() { list = new LinkedList[6][6]; soldier = new Soldier[100001]; for (int i = 1; i < 6; i++) { for (int j = 1; j < 6; j++) { list[i][j] = new LinkedList(); } } } public void hire(int mID, int mTeam, int mScore) { Soldier ob = new Soldier(mID, mTeam); soldier[mID] = ob; ob.next = list[mTeam][mScore].tail; ob.pre = list[mTeam][mScore].tail.pre; list[mTeam][mScore].tail.pre = ob; ob.pre.next = ob; } public void fire(int mID) { Soldier ob = soldier[mID]; link(ob.pre, ob.next); } public void updateSoldier(int mID, int mScore) { fire(mID); hire(mID, soldier[mID].Team, mScore); } public void updateTeam(int mTeam, int mChangeScore) { if (mChangeScore > 0) { for (int i = 4; i >= 1; i--) { int newScore = i + mChangeScore; if (newScore > 5) { newScore = 5; } link(list[mTeam][newScore].tail.pre, list[mTeam][i].head.next); link(list[mTeam][i].tail.pre, list[mTeam][newScore].tail); link(list[mTeam][i].head, list[mTeam][i].tail); } } else if (mChangeScore < 0) { for (int i = 2; i <= 5; i++) { int newScore = i + mChangeScore; if (newScore < 1) { newScore = 1; } link(list[mTeam][newScore].tail.pre, list[mTeam][i].head.next); link(list[mTeam][i].tail.pre, list[mTeam][newScore].tail); link(list[mTeam][i].head, list[mTeam][i].tail); } } } public int bestSoldier(int mTeam) { Soldier temp; int ans = 0; for (int i = 5; i >= 1; i--) { temp = list[mTeam][i].head.next; if (temp == list[mTeam][i].tail) { continue; } while (temp != null) { if (temp.ID > ans) { ans = temp.ID; } temp = temp.next; } return ans; } return 0; } class Soldier { int ID, Team; Soldier pre, next; Soldier(int id, int team) { ID = id; Team = team; pre = next = null; } } class LinkedList { Soldier head, tail; LinkedList() { head = new Soldier(-1, -1); tail = new Soldier(-1, -1); link(head, tail); } } void link(Soldier pre, Soldier next) { pre.next = next; next.pre = pre; } }
Editor is loading...
Leave a Comment