Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <vector>
  6. #define nmax 100001
  7.  
  8. using namespace std;
  9. ifstream fin("p.in");
  10. ofstream fout("p.out");
  11.  
  12. int n;
  13. struct info
  14. {
  15. int wh_t;
  16. int pos;
  17. };
  18.  
  19. vector<struct info>vec;
  20. string s[nmax];
  21. char sir_fin[2000001];
  22. int nr_ch;
  23. int nr_sir;
  24.  
  25. bool cmp(info i1, info i2)
  26. {
  27. if(i1.pos==i2.pos)
  28. if(s[i1.wh_t].size()<s[i2.wh_t].size()) return 1;
  29. return i1.pos<i2.pos;
  30. }
  31.  
  32. void init()
  33. {
  34. for(int i=0; i<nr_ch; i++)
  35. sir_fin[i]='a';
  36. }
  37.  
  38. void modif(info inf,int prev)
  39. {
  40. char sir[nmax];
  41. //strcpy(sir,s[inf.wh_t].c_str());
  42.  
  43. //strcpy(sir_fin+inf.pos-1,sir);
  44. if(inf.pos>prev)
  45. for(int i=0; i<s[inf.wh_t].size(); i++)
  46. sir_fin[i+inf.pos-1]=s[inf.wh_t][i];
  47. else
  48. for(int i=prev-inf.pos; i<s[inf.wh_t].size(); i++)
  49. sir_fin[i+inf.pos-1]=s[inf.wh_t][i];
  50. }
  51.  
  52. int main()
  53. {
  54. ios_base::sync_with_stdio(0);
  55. cin.tie(NULL);
  56. cin>>n;
  57. for(int i=1; i<=n; i++)
  58. {
  59. cin>>s[i];
  60. int ct;
  61. cin>>ct;
  62. int y;
  63. for(int j=1; j<=ct; j++)
  64. {
  65. nr_sir++;
  66. info x;
  67. x.wh_t=i;
  68. cin>>y;
  69. x.pos=y;
  70. vec.push_back(x);
  71. }
  72. int sz_s=s[i].size();
  73. int val=y+sz_s-1;
  74. nr_ch=max(nr_ch,val);
  75. }
  76.  
  77. sort(vec.begin(),vec.end(),cmp);
  78.  
  79. /*for(int i=0; i<nr_sir; i++)
  80. fout<<s[vec[i].wh_t]<<" "<<vec[i].pos<<endl;
  81. fout<<"DA\n";
  82. */
  83. int prev=0;
  84. init();
  85. for(int i=0; i<nr_sir; i++)
  86. {
  87. int sz=s[vec[i].wh_t].size();
  88. //fout<<s[vec[i].wh_t]<<" "<<prev<<" ";
  89. if(prev<sz+vec[i].pos-1)
  90. {
  91. modif(vec[i],prev);
  92. prev=sz+vec[i].pos-1;
  93. }
  94. if(prev>=nr_ch) {cout<<sir_fin; return 0;}
  95. //fout<<sir_fin<<"\n";
  96. }
  97.  
  98. cout<<sir_fin;
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement