Guest User

Untitled

a guest
Jul 17th, 2020
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1.  
  2. import java.util.*;
  3. import java.io.*;
  4. public class cf1354f{
  5.  
  6. public static void main(String[] args)throws IOException {
  7. PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
  8. BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
  9. StringTokenizer st=new StringTokenizer(bf.readLine());
  10. int tt=Integer.parseInt(st.nextToken());
  11. while(tt-->0) {
  12. st=new StringTokenizer(bf.readLine());
  13. int n=Integer.parseInt(st.nextToken());
  14. int k=Integer.parseInt(st.nextToken());
  15. pair[] mnn=new pair[n+1];
  16. boolean[] inc=new boolean[n+1];
  17. boolean[][] poss=new boolean[n+1][k+1];
  18. int[][] dp=new int[n+1][k+1];
  19. for(int i=1;i<=n;i++) {
  20. st=new StringTokenizer(bf.readLine());
  21. int a=Integer.parseInt(st.nextToken());
  22. int b=Integer.parseInt(st.nextToken());
  23. mnn[i]=new pair(a,b,i);
  24. }
  25. for(int i=0;i<=n;i++) {
  26. Arrays.fill(dp[i], 1, k+1, Integer.MIN_VALUE/2);
  27. }
  28. Arrays.sort(mnn,1,n+1);
  29. for(int i=1;i<=n;i++) {
  30. for(int j=k;j>0;j--) {
  31. dp[i][j]=Math.max(dp[i-1][j]+mnn[i].b*(k-1), dp[i-1][j-1]+mnn[i].a+mnn[i].b*(j-1));
  32. poss[i][j]=(dp[i][j]^dp[i-1][j]+mnn[i].b*(k-1))==0?false:true;
  33. }
  34. }
  35. for(int i=n,j=k;i>0;i--) {
  36. if(poss[i][j]) {
  37. inc[i]=true;
  38. j--;
  39. }
  40. }
  41. out.println(k+2*(n-k));
  42. for(int i=1,j=0;i<=n;i++) {
  43. if(j==k-1) {
  44. for(int z=1;z<=n;z++) {
  45. if(!inc[z]) {
  46. out.print(mnn[z].c+" "+(-mnn[z].c)+" ");
  47. }
  48. }
  49. j++;
  50. }
  51. if(inc[i]) {
  52. out.print(mnn[i].c+" ");
  53. j++;
  54. }
  55. }
  56. out.println();
  57. }
  58. out.close();
  59. }
  60. static class pair implements Comparable<pair>{
  61. int a,b,c;
  62. public pair(int x,int y,int z) {
  63. a=x;b=y;c=z;
  64. }
  65. public int compareTo(pair p) {
  66. return b-p.b;
  67. //if(a>p.a) return 1;
  68. }
  69. }
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment