Untitled
unknown
plain_text
2 years ago
3.5 kB
21
Indexable
main.cpp #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif #include <stdio.h> #define CMD_INIT 100 #define CMD_ADD 200 #define CMD_BUY 300 #define CMD_RENT 400 #define CMD_RETURN 500 #define MAXN 100 #define MAXL 8 extern void init(int N, int durableTime, int deliveryTimes[MAXN]); extern void addBicycle(int cTimestamp, int pID, int bicycleNum); extern void buyTicket(int cTimestamp, char uName[MAXL], int validTime); extern int rentBicycle(int cTimestamp, char uName[MAXL], int pID); extern int returnBicycle(int cTimestamp, char uName[MAXL], int pID); ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// static int mSeed; static int pseudo_rand(void) { mSeed = mSeed * 246247151 + 9543169; return (mSeed >> 16) & 0x7FFFFFFF; } static bool run() { int Q; int N, durableTime, deliveryTimes[MAXN], cTimestamp, pID, bicycleNum, validTime; int res = -1, ans; char uName[MAXL]; int dT; scanf("%d %d", &Q, &mSeed); bool okay = false; if (mSeed == 0) { for (int q = 0; q <= Q; ++q) { int cmd; scanf("%d", &cmd); switch(cmd) { case CMD_INIT: scanf("%d %d", &N, &durableTime); for (int i = 0; i < N; ++i) scanf("%d", &deliveryTimes[i]); init(N, durableTime, deliveryTimes); okay = true; break; case CMD_ADD: scanf("%d %d %d", &cTimestamp, &pID, &bicycleNum); if (okay) addBicycle(cTimestamp, pID, bicycleNum); break; case CMD_BUY: scanf("%d %s %d", &cTimestamp, uName, &validTime); if (okay) buyTicket(cTimestamp, uName, validTime); break; case CMD_RENT: scanf("%d %s %d", &cTimestamp, uName, &pID); if (okay) res = rentBicycle(cTimestamp, uName, pID); scanf("%d", &ans); if (res != ans) okay = false; break; case CMD_RETURN: scanf("%d %s %d", &cTimestamp, uName, &pID); if (okay) res = returnBicycle(cTimestamp, uName, pID); scanf("%d", &ans); if (res != ans) okay = false; break; } } } else { scanf("%d", &dT); cTimestamp = 0; for (int q = 0; q <= Q; ++q) { int cmd; scanf("%d", &cmd); switch(cmd) { case CMD_INIT: scanf("%d %d", &N, &durableTime); for (int i = 0; i < N; ++i) scanf("%d", &deliveryTimes[i]); init(N, durableTime, deliveryTimes); okay = true; break; case CMD_ADD: cTimestamp += pseudo_rand() % dT + 1; scanf("%d %d", &pID, &bicycleNum); if (okay) addBicycle(cTimestamp, pID, bicycleNum); break; case CMD_BUY: cTimestamp += pseudo_rand() % dT + 1; scanf("%s %d", uName, &validTime); if (okay) buyTicket(cTimestamp, uName, validTime); break; case CMD_RENT: cTimestamp += pseudo_rand() % dT + 1; scanf("%s %d", uName, &pID); if (okay) res = rentBicycle(cTimestamp, uName, pID); scanf("%d", &ans); if (res != ans) okay = false; break; case CMD_RETURN: cTimestamp += pseudo_rand() % dT + 1; scanf("%s %d", uName, &pID); if (okay) res = returnBicycle(cTimestamp, uName, pID); scanf("%d", &ans); if (res != ans) okay = false; break; } } } return okay; } int main() { setbuf(stdout, NULL); //freopen("sample_input.txt", "r", stdin); int T, MARK; scanf("%d %d", &T, &MARK); for (int tc = 1; tc <= T; tc++) { int score = run() ? MARK : 0; printf("#%d %d\n", tc, score); } return 0; }
Editor is loading...
Leave a Comment