Guest User

Untitled

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