Header Ad

HackerEarth Maximum bit shifts problem solution

In this HackerEarth Maximum bit shifts, problem-solution you are given a sequence of N numbers. You can perform the following operation:

Select a number from the sequence and swap any pair of bits in its binary representation (Binary representation does not have any leading zeroes).

Output the lexicographic maximum sequence possible after performing 0 or more of the above operations.


HackerEarth Maximum bit shifts problem solution


HackerEarth Maximum bit shifts problem solution.

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.InputStream;

public class Main {
public static void main(String[] args) {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
InputReader in = new InputReader(inputStream);
PrintWriter out = new PrintWriter(outputStream);
Task solver = new Task();
solver.solve(1, in, out);
out.close();
}

static class Task {
PrintWriter out;
InputReader in;

public void solve(int testNumber, InputReader in, PrintWriter out) {
this.out = out;
this.in = in;
int n = ni();
long[] arr = new long[n];
long[] ans = new long[n];
int i = 0;
for (i = 0; i < n; i++) {
arr[i] = nl();
String st = Long.toBinaryString(arr[i]);
int c = 0;
for (int j = 0; j < st.length(); j++)
c += st.charAt(j) - '0';
String mx = "";
for (int j = 0; j < c; j++)
mx += '1';
for (int j = 0; j < st.length() - c; j++)
mx += '0';
ans[i] = Long.parseLong(mx, 2);
}
for (i = 0; i < n; i++)
p(ans[i] + " ");
pn("");
}

int ni() {
return in.nextInt();
}

long nl() {
return in.nextLong();
}

void pn(String zx) {
out.println(zx);
}

void p(Object o) {
out.print(o);
}

}

static class InputReader {
private InputStream stream;
private byte[] buf = new byte[1024];
private int curChar;
private int numChars;

public InputReader(InputStream stream) {
this.stream = stream;
}

public int read() {
if (numChars == -1) {
throw new UnknownError();
}
if (curChar >= numChars) {
curChar = 0;
try {
numChars = stream.read(buf);
} catch (IOException e) {
throw new UnknownError();
}
if (numChars <= 0) {
return -1;
}
}
return buf[curChar++];
}

public int nextInt() {
return Integer.parseInt(next());
}

public long nextLong() {
return Long.parseLong(next());
}

public String next() {
int c = read();
while (isSpaceChar(c)) {
c = read();
}
StringBuffer res = new StringBuffer();
do {
res.appendCodePoint(c);
c = read();
} while (!isSpaceChar(c));

return res.toString();
}

private boolean isSpaceChar(int c) {
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
}

}
}

Post a Comment

0 Comments