Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ This Notebook contains Most frequently used Algorithm and concept used in Compet

and some cool functions often used in competitive programming.

All the codes are written in Python3 and Java 8
the codes are written in Python3 and Java 8
46 changes: 46 additions & 0 deletions src/cc/Bit1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package cc;

import java.util.Scanner;

public class Bit1 {

public static int findSetBits(int n) {
int rv = 0;
while (n > 0) {
rv += n & 1;
n >>= 1;
}
return rv;
}

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
while (t > 0) {
--t;
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();

int num_a_bits = findSetBits(a);
int num_b_bits = findSetBits(b);

int num_i_bits, num_c_minus_i_bits;
int count = 0;
for (int i = 0; i <= c; ++i) {
num_i_bits = findSetBits(i);
num_c_minus_i_bits = findSetBits(c - i);

if (num_i_bits == num_a_bits && num_c_minus_i_bits == num_b_bits) {
++count;
}
}

System.out.println(count);

}
scan.close();
}

}
107 changes: 107 additions & 0 deletions src/cc/ChefAndAverageDistance.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package cc;

import java.util.Scanner;

public class ChefAndAverageDistance {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
// scan.nextLine();
while (t > 0) {
--t;

int n = scan.nextInt();
int m = scan.nextInt();
scan.nextLine();
int[][] grid = new int[n][m];
int[] arr = new int[m + n - 1];
int x1, y1;
for (int i = 0; i < n; ++i) {
String str = scan.nextLine();
for (int j = 0; j < str.length(); ++j) {
grid[i][j] = Integer.parseInt(str.charAt(j) + "");
}
}

for (int i = 0; i < grid.length; ++i) {
for (int j = 0; j < grid[i].length; ++j) {
if (grid[i][j] != 1) {
continue;
}
for (int k = 1; k < m + n - 1; ++k) {
for (int l = 1; l <= k; ++l) {
x1 = i + l;
y1 = j + k - l;

if (x1 < grid.length && y1 < grid[i].length) {

if (grid[x1][y1] == 1) {
arr[k]++;
}
}
// negative distance
x1 = i - l;
y1 = j + k - l;

if (x1 < grid.length && y1 < grid[i].length && y1 >= 0 && x1 >= 0) {
if (grid[x1][y1] == 1) {
arr[k]++;
}
}

x1 = i + l;
y1 = j - k + l;
if (x1 < grid.length && y1 < grid[i].length && y1 >= 0 && x1 >= 0) {
if (grid[x1][y1] == 1) {
arr[k]++;
}
}

x1 = i - l;
y1 = j - k + l;
if (x1 < grid.length && y1 < grid[i].length && y1 >= 0 && x1 >= 0) {
if (grid[x1][y1] == 1) {
arr[k]++;
}
}

}
}

}
}

for (int i = 1; i < arr.length; ++i) {
arr[i] /= 2;
}

for (int i = 0; i < grid.length; ++i) {
for (int j = 0; j < grid[i].length; ++j) {
x1 = i + 1;
y1 = j;
if (x1 < grid.length && y1 < grid[i].length) {
if (grid[x1][y1] == 1 && grid[i][j] == 1)
arr[1]++;
}
x1 = i;
y1 = j + 1;
if (x1 < grid.length && y1 < grid[i].length) {
if (grid[x1][y1] == 1 && grid[i][j] == 1)
arr[1]++;
}
}
}

for (int i = 1; i < arr.length; ++i) {
System.out.print(arr[i] + " ");
}
System.out.println();

}

scan.close();

}

}
67 changes: 67 additions & 0 deletions src/cc/ChefAndAverageDistance1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package cc;

import java.util.Scanner;

public class ChefAndAverageDistance1 {

public static int[] arr;

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
while (t > 0) {
--t;

int n = scan.nextInt();
int m = scan.nextInt();
scan.nextLine();
int[][] grid = new int[n][m];
arr = new int[m + n - 1];
for (int i = 0; i < n; ++i) {
String str = scan.nextLine();
for (int j = 0; j < str.length(); ++j) {
grid[i][j] = Integer.parseInt(str.charAt(j) + "");
}
}
boolean[][] flag;
for (int i = 0; i < grid.length; ++i) {
for (int j = 0; j < grid[i].length; ++j) {
if (grid[i][j] == 1) {
flag = new boolean[n][m];
findPath(grid, i, j, 0, flag);
}
}
}

for (int i = 1; i < arr.length; ++i) {
System.out.print(arr[i] + " ");
}
System.out.println();
}

scan.close();
}

private static void findPath(int[][] grid, int i, int j, int length, boolean[][] flag) {
if (i >= grid.length || j >= grid[0].length || i < 0 || j < 0 || length >= arr.length) {
return;
}
//-1 represents processed
if (flag[i][j] == true)
return;

if (grid[i][j] == 1) {
arr[length]+=1;

}

flag[i][j] = true;

findPath(grid, i, j + 1, length + 1, flag);
findPath(grid, i + 1, j, length + 1, flag);
findPath(grid, i, j - 1, length + 1, flag);
findPath(grid, i - 1, j, length + 1, flag);

}

}
67 changes: 67 additions & 0 deletions src/cc/ChefAndAverageDistance3.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package cc;

import java.util.Scanner;

public class ChefAndAverageDistance3 {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
while (t > 0) {
--t;
int n = scan.nextInt();
int m = scan.nextInt();
scan.nextLine();

int[][] grid = new int[n][m];
for (int i = 0; i < n; ++i) {
String str = scan.nextLine();
for (int j = 0; j < str.length(); ++j) {
grid[i][j] = Integer.parseInt(str.charAt(j) + "");
}
}

int[] arr = new int[m + n - 1];
for (int i = 0; i < grid.length; ++i) {
for (int j = 0; j < grid[i].length; ++j) {
if (grid[i][j] == 1) {
boolean[][] grid_t = new boolean[n][m];

arr = findPath(grid, grid_t, i, j, 0, arr);
}
}
}

for (int i = 1; i < arr.length; ++i) {
System.out.print(arr[i] / 2 + " ");
}
System.out.println();
}

scan.close();
}

private static int[] findPath(int[][] grid, boolean[][] grid_t, int i, int j, int length, int[] arr) {
if (i >= grid.length || j >= grid[0].length || i < 0 || j < 0 || length > arr.length) {
return arr;
}

// -1 represents processed
if (grid_t[i][j] == true)
return arr;

if (grid[i][j] == 1) {
arr[length]++;

}

grid_t[i][j] = true;
arr = findPath(grid, grid_t, i, j + 1, length + 1, arr);
arr = findPath(grid, grid_t, i + 1, j, length + 1, arr);
arr = findPath(grid, grid_t, i, j - 1, length + 1, arr);
arr = findPath(grid, grid_t, i - 1, j, length + 1, arr);

return arr;
}

}
65 changes: 65 additions & 0 deletions src/cc/ChefAndCardTrick.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package cc;

import java.util.Scanner;

public class ChefAndCardTrick {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

int t = scan.nextInt();

while (t > 0) {
--t;

int n = scan.nextInt();

int arr[] = new int[n];

for (int i = 0; i < n; ++i) {
arr[i] = scan.nextInt();
}

boolean flag = false;

for (int i = 0; i < n; ++i) {
int j;
for (j = i; j <= i + n; ++j) {
if (arr[j % n] >= arr[(j + 1) % n]) {
break;
}
}

if (j == i + n - 1) {
flag = true;
break;
}

}
if (flag) {
System.out.println("YES");
} else {
System.out.println("NO");
}

}

}

}
//int count = 0;
//for (int i = 1; i < n - 1; ++i) {
//
// if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1]) {
// ++count;
// }
// if (count == 2) {
// break;
// }
//}
//if (count < 2) {
// System.out.println("YES");
//} else {
// System.out.println("NO");
//}
Loading