Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. // problema nkgraf (2020 Iasi) 80 pct.
  2. #include <fstream>
  3. #include <algorithm>
  4. #define NMAX 1005
  5. using namespace std;
  6. ifstream cin("nkgraf.in");
  7. ofstream cout("nkgraf.out");
  8. struct muchie
  9. {
  10. int x,y;
  11. } m[1005];
  12. int n,k,p,cond,nr,help;
  13. int x[NMAX];
  14. int nrmaree[800];
  15. inline void Inmultire_nr_mare(int *a,int b)
  16. {
  17. int t=0;
  18. for(int i=1; i<=a[0]; i++,t/=10)
  19. {
  20. t+=a[i]*b;
  21. a[i]=t%10;
  22. }
  23. for(; t; t/=10)
  24. a[++a[0]]=t%10;
  25. }
  26. inline void Impartire_nr_mare(int *a,int b)
  27. {
  28. int i,r=0;
  29. for(int i=a[0]; i>=1; i--,r%=b)
  30. {
  31. r=10*r+a[i];
  32. a[i]=r/b;
  33. }
  34. for(; a[a[0]]==0 && a[0]>1;)
  35. a[0]--;
  36. }
  37. void combinare(int n,int k)
  38. {
  39. nrmaree[++nrmaree[0]]=1;
  40. int maxim=max(k,n-k);
  41. int minim=min(k,n-k);
  42. for(int i=maxim+1; i<=n; i++)
  43. Inmultire_nr_mare(nrmaree,i);
  44. for(int i=2; i<=minim; i++)
  45. Impartire_nr_mare(nrmaree,i);
  46. for(int i=nrmaree[0]; i>0; i--)
  47. cout<<nrmaree[i];
  48. }
  49. bool cmp(muchie a,muchie b)
  50. {
  51. if(a.x==b.x)
  52. return a.y<b.y;
  53. return a.x<b.x;
  54. }
  55. inline void afisare(int k)
  56. {
  57. for(int i=1; i<=k; i++)
  58. cout<<m[x[i]].x<<" "<<m[x[i]].y<<endl;
  59. }
  60. inline void find_muchii(int n)
  61. {
  62.  
  63. for(int i=1; i<n; i++)
  64. for(int j=i+1; j<=n; j++)
  65. {
  66. m[++nr].x=i;
  67. m[nr].y=j;
  68. m[++nr].x=j;
  69. m[nr].y=i;
  70. }
  71. }
  72. inline void bkt_comb2(int cnt,int k)
  73. {
  74. if(cnt<=k)
  75. {
  76. for(int i=x[cnt-1]+1; i<=nr; i++)
  77. {
  78. x[cnt]=i;
  79. if(cnt==k)
  80. {
  81. help++;
  82. if(help==p)
  83. {
  84. afisare(k);
  85. return;
  86. }
  87. }
  88. else
  89. bkt_comb2(cnt+1,k);
  90. }
  91. }
  92.  
  93. }
  94. inline void read()
  95. {
  96. cin>>cond>>n>>k>>p;
  97. }
  98. inline void solve1(int n,int k)
  99. {
  100. combinare(n*(n-1),k);
  101. }
  102. inline void solve2(int n,int k,int p)
  103. {
  104. find_muchii(n);
  105. sort(m+1,m+nr+1,cmp);
  106. bkt_comb2(1,k);
  107. }
  108. int main()
  109. {
  110. read();
  111. if(cond==1)
  112. solve1(n,k);
  113. else
  114. {
  115. solve2(n,k,p);
  116. /*for(int i=1;i<=nr;i++)
  117. cout<<m[i].x<<" "<<m[i].y<<endl;*/
  118. }
  119. return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement