#include <iostream> #include <vector> #define MAX 5000000 using namespace std; bool endless(vector<int>& o, vector<int>& a) { for (int i = 0; i != o.size(); i++) if (o[i] > a[i]) return false; return true; } int main() { int n, m; char temp; vector<int> orig_money, act_money; vector<bool> sequence; cin >> n; orig_money.resize(n); act_money.resize(n); for (int i = 0; i != n; i++) { cin >> orig_money[i]; act_money[i] = orig_money[i]; } cin >> m; sequence.resize(m); for (int i = 0; i != m; i++) { cin >> temp; if (temp == 'W') sequence[i] = true; else sequence[i] = false; } bool broke = false; for (int i = 0; i < MAX && !broke; i++) { if (n * m < MAX && i == n * m) if (endless(orig_money, act_money)) { cout << "NIE" << endl; return 0; } if (sequence[i % m]) act_money[i % n]++; else act_money[i % n]--; if (act_money[i % n] == 0) { cout << i+1 << endl; return 0; } } cout << "NIE" << endl; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <iostream> #include <vector> #define MAX 5000000 using namespace std; bool endless(vector<int>& o, vector<int>& a) { for (int i = 0; i != o.size(); i++) if (o[i] > a[i]) return false; return true; } int main() { int n, m; char temp; vector<int> orig_money, act_money; vector<bool> sequence; cin >> n; orig_money.resize(n); act_money.resize(n); for (int i = 0; i != n; i++) { cin >> orig_money[i]; act_money[i] = orig_money[i]; } cin >> m; sequence.resize(m); for (int i = 0; i != m; i++) { cin >> temp; if (temp == 'W') sequence[i] = true; else sequence[i] = false; } bool broke = false; for (int i = 0; i < MAX && !broke; i++) { if (n * m < MAX && i == n * m) if (endless(orig_money, act_money)) { cout << "NIE" << endl; return 0; } if (sequence[i % m]) act_money[i % n]++; else act_money[i % n]--; if (act_money[i % n] == 0) { cout << i+1 << endl; return 0; } } cout << "NIE" << endl; return 0; } |