Advertisement
a53

Cioc

a53
Feb 1st, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,k,c,kf,k1;
  4. long long kmax,nr;
  5. vector<long long>arr,copy_arr;
  6.  
  7. class InParser
  8. {
  9. private:
  10. FILE *fin;
  11. char *buff;
  12. int sp;
  13.  
  14. char read_ch()
  15. {
  16. ++sp;
  17. if(sp==4096)
  18. {
  19. sp=0;
  20. fread(buff,1,4096,fin);
  21. }
  22. return buff[sp];
  23. }
  24.  
  25. public:
  26. InParser(const char* nume)
  27. {
  28. fin=fopen(nume,"r");
  29. buff=new char[4096]();
  30. sp=4095;
  31. }
  32.  
  33. InParser& operator >> (int &n)
  34. {
  35. char c;
  36. while(!isdigit(c=read_ch())&&c!='-');
  37. int sgn=1;
  38. if (c=='-')
  39. {
  40. n=0;
  41. sgn=-1;
  42. }
  43. else
  44. {
  45. n=c-'0';
  46. }
  47. while(isdigit(c=read_ch()))
  48. {
  49. n=10*n+c-'0';
  50. }
  51. n*=sgn;
  52. return *this;
  53. }
  54.  
  55. InParser& operator >> (long long &n)
  56. {
  57. char c;
  58. n=0;
  59. while(!isdigit(c=read_ch())&&c!='-');
  60. long long sgn=1;
  61. if(c=='-')
  62. {
  63. n=0;
  64. sgn=-1;
  65. }
  66. else
  67. {
  68. n=c-'0';
  69. }
  70. while(isdigit(c=read_ch()))
  71. {
  72. n=10*n+c-'0';
  73. }
  74. n*=sgn;
  75. return *this;
  76. }
  77. };
  78.  
  79. class OutParser
  80. {
  81. private:
  82. FILE *fout;
  83. char *buff;
  84. int sp;
  85.  
  86. void write_ch(char ch)
  87. {
  88. if(sp==50000)
  89. {
  90. fwrite(buff,1,50000,fout);
  91. sp=0;
  92. buff[sp++]=ch;
  93. }
  94. else
  95. {
  96. buff[sp++]=ch;
  97. }
  98. }
  99.  
  100. public:
  101. OutParser(const char* name)
  102. {
  103. fout=fopen(name,"w");
  104. buff=new char[50000]();
  105. sp=0;
  106. }
  107. ~OutParser()
  108. {
  109. fwrite(buff,1,sp,fout);
  110. fclose(fout);
  111. }
  112.  
  113. OutParser& operator <<(int vu32)
  114. {
  115. if(vu32<=9)
  116. {
  117. write_ch(vu32+'0');
  118. }
  119. else
  120. {
  121. (*this) <<(vu32/10);
  122. write_ch(vu32%10+'0');
  123. }
  124. return *this;
  125. }
  126.  
  127. OutParser& operator <<(long long vu64)
  128. {
  129. if(vu64<=9)
  130. {
  131. write_ch(vu64+'0');
  132. }
  133. else
  134. {
  135. (*this) <<(vu64/10);
  136. write_ch(vu64%10+'0');
  137. }
  138. return *this;
  139. }
  140.  
  141. OutParser& operator <<(char ch)
  142. {
  143. write_ch(ch);
  144. return *this;
  145. }
  146. OutParser& operator <<(const char *ch)
  147. {
  148. while(*ch)
  149. {
  150. write_ch(*ch);
  151. ++ch;
  152. }
  153. return *this;
  154. }
  155. };
  156.  
  157. int main()
  158. {
  159. InParser f("cioc.in");
  160. OutParser g("cioc.out");
  161. f>>c>>n>>k;
  162. for(int i=0;i<n;++i)
  163. {
  164. f>>nr;
  165. arr.push_back(nr);
  166. copy_arr.push_back(nr);
  167. }
  168. sort(copy_arr.begin(),copy_arr.end());
  169. if(c==1)
  170. {
  171. k1=k;
  172. while(copy_arr[k1]==copy_arr[k-1])
  173. ++k1;
  174. g<<k1<<'\n';
  175. return 0;
  176. }
  177. for(int i=0;i<n;++i)
  178. {
  179. g<<arr[i]<<' ';
  180. if(binary_search(copy_arr.begin(),copy_arr.begin()+k,arr[i]))
  181. g<<2*arr[i]<<' ';
  182. }
  183. return 0;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement