CodeChef submission 601289 (C++ 4.3.2) plaintext list. Status: AC, problem CANDY, contest . By azizkhan (azizkhan), 2011-07-18 20:29:09.
#include <iostream> #include <cstdio> #include <cstdlib> #include <set> #include <map> #include <vector> #include <string> #include <cmath> #include <cstring> #include <queue> #include <stack> #include <algorithm> using namespace std; const int maxn = 250000; int a[100], b[100], c[100], P, Q, n; int q[500005], head, tail; bool used[500005]; int main() { int i, j, k; for (i = 0; i < n; ++i) for (i = 0; i < n; ++i) { c[i] = a[i] * Q - b[i] * P; } q[tail++] = maxn; used[maxn] = 1; int res = 0; bool found = false; while (head < tail) { ++res; int size = tail - head; while (size--) { int u = q[head++]; for (i = 0; i < n; ++i) { if (c[i] > 0 && u > maxn) continue; if (c[i] < 0 && u < maxn) continue; int v = u + c[i]; if (v == maxn) { found = true; break; } if (!used[v]) { used[v] = 1; q[tail++] = v; } } if (found) break; } if (found) break; } if (found) else return 0; }
Comments

