Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8. Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <cmath>
using namespace std;

const int MAX = 1000000;
int nominaly [MAX][3]; // 0 - nomina� pocz�tkowy, 1 - strata w du�ym cyklu, 2 - delta
bool wyniki [MAX];
bool nieTrzebaSprawdzac [MAX];
int NWD(int a, int b)
{
   if(a!=b)
     return NWD(a>b?a-b:a,b>a?b-a:b);
   return a;
}

int main () {
    ios_base::sync_with_stdio (false);
    int n,m,cykle; cin>>n;
	for (int i = 0; i < n; ++i) {
		cin>>nominaly[i][0];
		nominaly[i][2] = nominaly[i][0];
	}
	cin>>m;
	char input;
	for (int i = 0; i < m; ++i) {
		cin>>input;
		if (input == 'P')
			wyniki[i] = false;
		else
			wyniki[i] = true;
	}
    long long int NWW = n * m / NWD (n,m);
	//cout<<NWW<<endl;
	for (long long int i = 0; i < NWW; ++i) {
		if (wyniki[i%m] == true) {
			++nominaly[i%n][0];
		}
		else {
			--nominaly[i%n][0];
		}
		if (nominaly[i%n][0] < nominaly[i%n][2]) {
			nominaly[i%n][2] = nominaly[i%n][0];
		}
		if (nominaly[i%n][0] == 0) {
			cout<<i+1;
			return 0;
		}
		//
		if (wyniki[i%m] == true) {
			++nominaly[i%n][1];
		}
		else {
			--nominaly[i%n][1];
		}
		//
	}
	bool nieskonczone = true; //za�.
	for (int i = 0; i < n; ++i) {
		if (nominaly[i][1] < 0) {
			nieskonczone = false;
		}
		else {
			nieTrzebaSprawdzac[i] == true;
		}
		nominaly[i][2] = -1 * (nominaly[i][0] - nominaly[i][1] - nominaly[i][2]);
	}
	if (nieskonczone == true) {
		cout<<-1;
		return 0;
	}
	cykle = 1;
	while (true) {
		for (int i = 0; i < n; ++i) {
			if (nieTrzebaSprawdzac[i] == false) {
				if (nominaly[i][0] + nominaly[i][2] <= 0) {
					cout<<cykle*NWW + i + 1;
					cin.get(),cin.get();
					return 0;
				}
				nominaly[i][0] += nominaly[i][1];
			}
		}
		++cykle;
	}
	//cin.get(),cin.get();
	return 0;
}