Pagini recente » Cod sursa (job #2925838) | Cod sursa (job #1744096) | Cod sursa (job #2452991) | Cod sursa (job #1128128) | Cod sursa (job #2571730)
#include <fstream>
#include <queue>
#define Imax 1000011
using namespace std;
ifstream fin("jstc.in");
ofstream fout("jstc.out");
int a,b,k,S,k1,ap[Imax],v[Imax],n,X;
string s;
int stramos(int x)
{
if (x==ap[x])
return ap[x];
ap[x]=stramos(ap[x]);
return ap[x];
}
int main()
{
fin>>a>>b;
fin>>s;
for (int i=1;i<Imax-1;i++)
ap[i]=i;
int sz=s.size()-1;
int i=0;
while (i<=sz)
{
if (s[i]=='I')
{
n++;
k++;
v[n]=k;
}
if (s[i]=='E'){
int a=stramos(v[n]);
int b=stramos(v[n-1]);
if (a>b)
ap[b]=a;
else
ap[a]=b;
n--;
}
if (s[i]=='Q')
{
X=(1LL*a*X+b)%k+1;
int x=stramos(X-1)+1;
if (x<=v[n])
S+=x;
else
S--;
}
i++;
}
fout<<S;
return 0;
}