fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int maxn=15;
  4. mt19937 rnd(time(0));
  5. int n,m,K;
  6. int a[maxn+5][10];
  7. char s[maxn+5];
  8. inline int Calc(int st,int x,int c,int t){
  9. return ((a[st][(c<<2)|(t<<1)]+1ll)*x
  10. +a[st][(c<<2)|(t<<1)|1])%m;
  11. }
  12. bool Check(int st,int x,int c){
  13. int t=rnd()&1;
  14. if(st>(n-1)<<1) return (x<=K)||(-x+m<=K);
  15. if(st&1) return Check(st+1,x,t)||Check(st+1,x,!t);
  16. else{
  17. return Check(st+1,Calc(st>>1,x,c,t),t)
  18. &&Check(st+1,Calc(st>>1,x,c,!t),!t);
  19. }
  20. }
  21. signed main(){
  22. scanf("%d%d%d",&n,&m,&K);
  23. scanf("%s",s);
  24. for(int i=0;i<n;i++)
  25. for(int j=0;j<8;j++)
  26. scanf("%d",&a[i][j]);
  27. int x=0;
  28. for(int i=0;i<n;i++){
  29. if(Check(i<<1,x,1)){
  30. putchar('B');
  31. x=Calc(i,x,1,s[i]=='B');
  32. }
  33. else{
  34. putchar('T');
  35. x=Calc(i,x,0,s[i]=='B');
  36. }
  37. }
  38. return 0;
  39. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty