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
#include <iostream>
using namespace std;

int n,m,resztan,resztam;
char znak;
long long int najmncykl;
long long int NWW,gra,i;
long long int kolega[1000001]={};//ile pieniedzy
char wygrana[1000001]={};
long long int calkwygrana[1000001]={};
long long int cykli[10000001]={};

int NWD(int a, long int b)
{
  int pom;
 
    while(b!=0)
  {
      pom = b;
      b = a%b;
      a = pom;  
    }
    return a;
}



int main()
{
  //wczytanie  
  ios_base::sync_with_stdio(0); //zdecydowanie skraca operacje wejscia wyjscia-wylaczenie synchronizacji strumienia
    cin>>n;
    for (i=0;i<=n-1;i++) cin>>kolega[i];
    cin>>m;
    for (i=0;i<=m-1;i++) 
    {cin>>znak;
     if (znak=='W') wygrana[i]=1; else wygrana[i]=-1;
    }
    

//najmniejsza wspolna wielokrotnosc
    NWW=n/NWD(n,m)*m;


// jakie beda bezwzgl�dne (bez uwzgl�dnienia pocz�tkowych pieni�dzy) wygrane po calym cyklu gier
    do
     {
      resztan=gra%n;resztam=gra%m;
      calkwygrana[resztan]=calkwygrana[resztan]+wygrana[resztam];
      gra++;
     }
    while (gra<NWW);    

// ile cykli graj� poszczeg�lni gracze i kt�ry gracz ko�czy w najkr�tszym cyklu
    najmncykl=9000000000000000005LL;
    
    
    for (i=0;i<=n-1;i++)
    {
     cykli[i]=(-1)*kolega[i]/calkwygrana[i];if ((cykli[i]>0)&&(cykli[i]<najmncykl)) najmncykl=cykli[i];
    }
    
   
    if (najmncykl!=9000000000000000005LL) 
    
    //ile wszyscy maja po skonczeniu cyklu o jeden mniejszego ni� najkrotszy
    {for (i=0;i<=n-1;i++) kolega[i]=kolega[i]+(najmncykl-1)*calkwygrana[i];
    //ostatni cykl
    
    gra=0;
    do
     {
      resztan=gra%n;resztam=gra%m;
      kolega[resztan]=kolega[resztan]+wygrana[resztam];
      gra++;
     }
    while (kolega[resztan]>0);
    
    gra=(najmncykl-1)*NWW+gra;
    cout<<gra;
    } else cout<<-1;
    return 0;
}