In this post, we will solve HackerRank Beautiful 3 Set Problem Solution.
You are given an integer n. A set. S, of triples (x, y, z) is beautiful if and only if:
- 0 < xi, Yi, Zi
- Xi + Yi + zi = n, Vi: 1 ≤ i ≤ |S|
- Let X be the set of different x,’s in S. Y be the set of different y’s in S. and Z be the set of different z, in S. Then |X = Y = Z = |S|
The third condition means that all,’s are pairwise distinct. The same goes for y, and zi. Given n. find any beautiful set having a maximum number of elements. Then print the cardinality of S (i.e.. |S) on a new line, followed by S❘ lines where each line contains 3 space-separated integers describing the respective values of a y₁, and z₁.
Input Format
A single integer, n.
Output Format
On the first line, print the cardinality of S (i.e.. [S]). For each of the S subsequent lines, print three space-separated numbers per line describing the respective values of xi, yi, and zi, for triple i in S.
Sample Input
3
Sample Output
3
0 1 2
2 0 1
1 2 0


Beautiful 3 Set Problem C Solution
//Tanuj Khattar
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
#define gu getchar_unlocked
#define pu putchar_unlocked
#define LL long long int
#define ULL unsigned long long int
#define si(n) scanf("%d",&n)
#define dout(n) printf("%d\n",n)
#define sll(n) scanf("%lld",&n)
#define lldout(n) printf("%lld\n",n)
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)<(b)?(b):(a))
#define ROUNDOFFINT(d) d = (int)((double)d + 0.5)
#define PLUSWRAP(index,n) index = (index+1)%n
#define MINUSWRAP(index,n) index = (index + n -1)%n
#define INF 1000000000 //1 billion (10^9)
#define FLUSHN while(gu()!='\n')
#define FLUSHS while(gu()!=' ')
int cmpfunc(const void *a,const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int n;
si(n);
int ans=2*n;
ans/=3;
ans++;
dout(ans);
if(n%3!=2)
{
int i;
int b=n/3;
b++;
for(i=0;i<ans;i=i+1)
{
printf("%d %d %d\n",i,b,n-i-b);
b=(b+1)%ans;
}
}
else
{
int fl=0;
int b=2+n-ans;
int i;
for(i=0;i<ans;i++)
{
printf("%d %d %d\n",i,b,n-i-b);
b=b+1;
if(b==ans+1)
b=0;
}
}
return 0;
}
Beautiful 3 Set Problem C++ Solution
#include <bits/stdc++.h>
using namespace std;
#define ALL(x) (x).begin(),(x).end()
template<typename T> inline bool checkmin(T &a, T b) { if (b < a) { a = b; return 1; } return 0; }
template<typename T> inline bool checkmax(T &a, T b) { if (b > a) { a = b; return 1; } return 0; }
typedef long long ll;
vector<vector<int>> check(int s, int n) {
for (int p = 0; p < 2; ++p) {
vector<bool> v(n + 1, 0);
vector<vector<int>> ans(s + 1);
bool ok = true;
int j = s;
for (int i = 0; i < 2; ++i) {
int y = (i + p) % 2;
while (y <= s && j >= 0) {
int z = n - j - y;
if (z < 0) {
ok = 0;
break;
}
if (v[z]) {
ok = 0;
break;
}
v[z] = true;
ans[j] = vector<int>({j, y, z});
y += 2;
j--;
}
if (!ok) {
break;
}
}
if (ok) {
return ans;
}
}
return vector<vector<int>>();
}
int main() {
int n;
cin >> n;
vector<vector<int>> ans(1, vector<int>({0, 0, n}));
for (int i = 1; i <= n; ++i) {
vector<vector<int>> tmp = check(i, n);
if (tmp.size()) {
ans = tmp;
}
}
cout << ans.size() << endl;
for (int i = 0; i < ans.size(); ++i) {
cout << ans[i][0] << ' ' << ans[i][1] << ' ' << ans[i][2] << endl;
}
}
Beautiful 3 Set Problem C Sharp Solution
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {
static void Solve(int n)
{
int[,] mat = new int[n + 1, n + 1];
for (int x = 0; x <= n; x++)
{
for (int y = 0; y <= n; y++)
{
mat[x, y] = n - x - y;
//Console.Write("{0,2} ",mat[x,y]);
}
//Console.WriteLine();
}
int max = 0, idx = 0, m1, m2;
for (int x = 0; x <= n; x++)
{
m1 = mat[x, 0] / 2 + 1;
m2 = mat[0, m1] / 2 + 1;
if (x >= m2 && mat[x, 0] % 2 != mat[0, m1] % 2)
{
if (m1 + m2 > max)
{
max = m1 + m2;
idx = x;
}
}
}
Console.WriteLine(max);
m1 = mat[idx, 0] / 2 + 1;
for (int y = 0; y < m1; y++)
{
Console.WriteLine("{0} {1} {2}", y, idx + y, n - idx - 2 * y);
}
m2 = mat[0, m1] / 2 + 1;
for (int x = 0; x < m2; x++)
{
Console.WriteLine("{0} {1} {2}", m1 + x, x, n - 2 * x - m1);
}
}
static void Main(String[] args) {
int n = Convert.ToInt32(Console.ReadLine());
Solve(n);
}
}
Beautiful 3 Set Problem Java Solution
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int max = n/3*2;
if (n%3==2) {
max++;
}
bw.write(String.valueOf(max+1));
bw.newLine();
int first = max;
for (int i = (max+1)/2; i >= 0; i--) {
bw.write(String.valueOf(first+" "+i+" "+(n-i-first)));
bw.newLine();
first--;
}
int sn = n;
if (n%3==1) {
sn--;
}
for (int i = sn-first-1; first >= 0; i--) {
bw.write(String.valueOf(first+" "+i+" "+(n-i-first)));
bw.newLine();
first--;
}
bw.close();
}
}
Beautiful 3 Set Problem JavaScript Solution
function processData(input) {
let k = Math.floor(2*input/3+1)
let x=[],y=[],z=[]
console.log(k)
for(let i = 0, j=Math.floor(input/3 + input%3); i < k; ++i, ++j){
if((i+j)>input) j=(j+1)%2
if(!x.includes(i) && !y.includes(j)){
x.push(i)
y.push(j)
z.push(input-(i+j))
}
}
for(let i = 0;i<x.length;i++){
console.log(x[i]," ",y[i]," ",z[i])
}
}
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
_input += input;
});
process.stdin.on("end", function () {
processData(_input);
});
Beautiful 3 Set Problem Python Solution
n = int(input().strip())
i = n * 2 // 3
print (i+1)
x=(i+1)//2
for j in range(x+1):
print(j,x+j,n-x-2*j)
for j in range(x+1,i+1):
print(j,j-x-1,n-2*j+x+1)