Untitled
unknown
plain_text
a year ago
3.8 kB
13
Indexable
package H2140; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; class Solution { private final static int CMD_INIT = 100; private final static int CMD_MAKE_LIST = 200; private final static int CMD_COPY_LIST = 300; private final static int CMD_UNDATE_ELEMENT = 400; private final static int CMD_ELEMENT = 500; private final static UserSolution usersolution = new UserSolution(); private static int mSeed; private static int pseudo_rand() { mSeed = mSeed * 214013 + 2531011; return (mSeed >> 16) & 0x7FFF; } private static char[] mName = new char[21]; private static char[] mDest = new char[21]; private static char[] mSrc = new char[21]; private static int[] mListValue = new int[200000]; private static void generateName(char[] name, int seed) { mSeed = seed; int name_len = pseudo_rand() % 20 + 1; for (int i = 0; i < name_len; ++i) { name[i] = (char)(pseudo_rand() % 26 + 'a'); } name[name_len] = '\0'; } private static int generateList(int[] listValue, int seed) { mSeed = seed; int length = pseudo_rand() << 15; length = (length + pseudo_rand()) % 200000 + 1; for (int i = 0; i < length; ++i) { listValue[i] = pseudo_rand(); } return length; } private static boolean run(BufferedReader br) throws Exception { StringTokenizer st; int numQuery; int seed; int mIndex, mValue, mCopy, mLength; int userAns, ans; boolean isCorrect = false; numQuery = Integer.parseInt(br.readLine()); for (int q = 0; q < numQuery; ++q) { st = new StringTokenizer(br.readLine(), " "); int cmd; cmd = Integer.parseInt(st.nextToken()); switch (cmd) { case CMD_INIT: usersolution.init(); isCorrect = true; break; case CMD_MAKE_LIST: seed = Integer.parseInt((st.nextToken())); generateName(mName, seed); seed = Integer.parseInt((st.nextToken())); mLength = generateList(mListValue, seed); usersolution.makeList(mName, mLength, mListValue); break; case CMD_COPY_LIST: seed = Integer.parseInt((st.nextToken())); generateName(mDest, seed); seed = Integer.parseInt((st.nextToken())); generateName(mSrc, seed); mCopy = Integer.parseInt((st.nextToken())); usersolution.copyList(mDest, mSrc, (mCopy != 0)); break; case CMD_UNDATE_ELEMENT: seed = Integer.parseInt((st.nextToken())); generateName(mName, seed); mIndex = Integer.parseInt((st.nextToken())); mValue = Integer.parseInt((st.nextToken())); usersolution.updateElement(mName, mIndex, mValue); break; case CMD_ELEMENT: seed = Integer.parseInt((st.nextToken())); generateName(mName, seed); mIndex = Integer.parseInt((st.nextToken())); userAns = usersolution.element(mName, mIndex); ans = Integer.parseInt((st.nextToken())); // System.out.println(userAns + " " + ans); if (userAns != ans) { isCorrect = false; } break; default: isCorrect = false; break; } } return isCorrect; } public static void main(String[] args) throws Exception { int TC, MARK; System.setIn(new java.io.FileInputStream("C:/Users/hoang.dung2/workspace/SW PRO/src/H2140/input.txt")); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); TC = Integer.parseInt(st.nextToken()); MARK = Integer.parseInt(st.nextToken()); for (int testcase = 1; testcase <= TC; ++testcase) { int score = run(br) ? MARK : 0; System.out.println("#" + testcase + " " + score); } br.close(); } }
Editor is loading...
Leave a Comment