Guest User

Untitled

a guest
Jan 22nd, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. #include <vector>
  2. #include <cstdio>
  3. #include <queue>
  4. #include <algorithm>
  5. #include <cstring>
  6. using namespace std;
  7.  
  8. vector <int> eu;
  9. vector < pair<int,int> > v[200010];
  10. char rj[200010];
  11. bool bio[200010];
  12. bool bio2[200010];
  13. int k;
  14.  
  15. void bla(int pos){
  16. for(int j=0;j<200003;++j)
  17. if(v[j].size()%2==1){
  18. v[j].push_back(make_pair(200005,k));
  19. v[200005].push_back(make_pair(j,k));
  20. ++k;
  21. }
  22. }
  23.  
  24. void euler(int pos){
  25. bio2[pos]=true;
  26. while(!v[pos].empty()){
  27. int x=v[pos][v[pos].size()-1].first;
  28. int y=v[pos][v[pos].size()-1].second;
  29. if(bio[y]==true){
  30. v[pos].pop_back();
  31. continue;
  32. }
  33. bio[y]=true;
  34. euler(x);
  35. eu.push_back(y);
  36. }
  37. }
  38.  
  39. int n;
  40. int ax,bx,mx,ay,by,my;
  41. long long x1,y1;
  42. int t;
  43. int main(void){
  44. scanf("%d",&t);
  45. for(int p=0;p<t;++p){
  46. memset(bio,0,sizeof(bio));
  47. memset(bio2,0,sizeof(bio2));
  48. k=0;
  49. scanf("%d",&n);
  50. scanf("%lld%lld%d%d%d%d%d%d",&x1,&y1,&ax,&bx,&mx,&ay,&by,&my);
  51. v[x1].push_back(make_pair(y1+mx,k));
  52. v[y1+mx].push_back(make_pair(x1,k));
  53. ++k;
  54. for(int i=2;i<=n;++i){
  55. x1=(x1*ax+bx)%mx;
  56. y1=(y1*ay+by)%my;
  57. v[x1].push_back(make_pair(y1+mx,k));
  58. v[y1+mx].push_back(make_pair(x1,k));
  59. ++k;
  60. }
  61. for(int i=0;i<200003;++i)
  62. if(!v[i].empty() && !bio2[i]){
  63. eu.clear();
  64. bla(i);
  65. euler(i);
  66. bool x=0;
  67. for(int j=0;j<eu.size();++j){
  68. if(x) rj[eu[j]]='A';
  69. else rj[eu[j]]='B';
  70. x=!x;
  71. }
  72. }
  73. for(int i=0;i<n;++i)
  74. printf("%c",rj[i]);
  75. printf("\n");
  76. }
  77. return 0;}
Add Comment
Please, Sign In to add comment