Untitled
unknown
plain_text
a year ago
3.8 kB
21
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