#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; } |
English