Skip to content
Programming101
Programming101

Learn everything about programming

  • Home
  • CS Subjects
    • IoT – Internet of Things
    • Digital Communication
    • Human Values
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programming101
Programming101

Learn everything about programming

HackerEarth Painting The logo problem solution

YASH PAL, 31 July 2024
In this HackerEarth Painting, The logo problem solution Rahul has set upon the quest for a new logo of his company. He has created the following continuous logo:
    /
   / 
  / /
 / / 
/ / /
  / / /
      / /
    / /
       /
      /
However, his sister, Rashi, likes the following discontinuous design more
   /
  / 
 / /
/ / 
    / /
    / /
      /
     /
The size of a logo is the longest continuous streak of same characters on an arm.
So, size of 1st logo is 5 while that of 2nd one is 4.
We know that every ‘/’ or ” character requires exactly 1 unit of paint.
Now, Rahul has X units of paint and would like to draw each of the two favorite logos of himself and his sister, Rashi. So, as to consume it optimally, he wants to know the maximal possible sizes of the two logos that can be drawn such that the difference in sizes of both logos is atmost 1.
Note that it is necessary to be able to draw both the logos. In case, the paint is not enough, output 0 0 instead.
HackerEarth Painting The logo problem solution

HackerEarth Painting The logo problem solution.

#include <bits/stdc++.h>
using namespace std;

#define MOD 1000000007
#define pb(x) push_back(x)
#define mp(x,y) make_pair(x,y)
#define FF first
#define SS second
#define s(n) scanf("%d",&n)
#define sl(n) scanf("%lld",&n)
#define sf(n) scanf("%lf",&n)
#define ss(n) scanf("%s",n)
#define sc(n) {char temp[4]; ss(temp); n=temp[0];}
#define INF (int)1e9
#define LINF (long long)1e18
#define EPS 1e-9
#define maX(a,b) ((a)>(b)?(a):(b))
#define miN(a,b) ((a)<(b)?(a):(b))
#define abS(x) ((x)<0?-(x):(x))

typedef long long ll;
typedef unsigned long long LL;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;
typedef pair<int,PII> TRI;
typedef vector<int> VI;
typedef vector<LL> VL;
typedef vector<ll> vl;
typedef vector<PII> VII;
typedef vector<TRI> VT;

ll n;
int TEST_NO;

void precompute() {
}
void read() {
sl(n);
}
void preprocess() {
}

void solve() {
if(n < 12) {
puts("0 0");
return;
}

int lo = 0, hi = sqrt(n);
int ans = -1, add = -1;
while(lo <= hi) {
ll mid = lo + (hi - lo >> 1);
ll x = 2 * mid + 1;
ll maxx = (x + 1) * (2 * x + 4);
ll minx = (x + 1) * (2 * x);
if(n >= minx) {
ans = x;
if(n >= maxx) add = 1;
else add = -1;
lo = mid + 1;
} else
hi = mid - 1;
}
if(ans != -1) printf("%d %dn", ans, ans + add);
else puts("0 0");
}
int main() {
int NO_OF_TESTS;
s(NO_OF_TESTS);
precompute();
for (TEST_NO = 1; TEST_NO <= NO_OF_TESTS; ++TEST_NO) {
read();
preprocess();
solve();
}
return 0;
}

Second solution

#include<bits/stdc++.h>
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define SZ(a) (int)(a.size())
#define SET(a,b) memset(a,b,sizeof(a))
#define LET(x,a) __typeof(a) x(a)
#define TR(v,it) for( LET(it,v.begin()) ; it != v.end() ; it++)
#define repi(i,n) for(int i=0; i<(int)n;i++)
#define si(n) scanf("%d",&n)
#define sll(n) scanf("%lld",&n)
#define sortv(a) sort(a.begin(),a.end())
#define all(a) a.begin(),a.end()
#define DRT() int t; cin>>t; while(t--)
#define TRACE
using namespace std;

#ifdef TRACE
#define trace1(x) cerr << #x << ": " << x << endl;
#define trace2(x, y) cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define trace3(x, y, z) cerr << #x << ": " << x << " | " << #y << ": " << y << " | " << #z << ": " << z << endl;
#define trace4(a, b, c, d) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << endl;
#define trace5(a, b, c, d, e) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << endl;
#define trace6(a, b, c, d, e, f) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << " | " << #f << ": " << f << endl;

#else

#define trace1(x)
#define trace2(x, y)
#define trace3(x, y, z)
#define trace4(a, b, c, d)
#define trace5(a, b, c, d, e)
#define trace6(a, b, c, d, e, f)

#endif


typedef long long LL;
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef vector< PII > VPII;


LL f(LL x)
{
if(x%2==0)
{
LL k = x/2;
return 4*(k*(k+1));
}
x = (x+1)/2;
return 4*x*x;
}

int main()
{
DRT()
{
LL x; cin>>x;
if(x<12)
{
cout<<0<<" "<<0<<endl;
continue;
}
LL l = 0; LL h = 100000000;
while(h-l>1)
{
LL m = (l+h)/2;
if(f(m) + f(m+1)<=x)
l = m;
else h = m-1;
}
while(f(h) + f(h+1)>x)h--;
if(h%2) cout<<h<<" "<<h+1<<endl;
else cout<<h+1<<" "<<h<<endl;
}
return 0;
}
coding problems solutions

Post navigation

Previous post
Next post
  • Automating Image Format Conversion with Python: A Complete Guide
  • HackerRank Separate the Numbers solution
  • How AI Is Revolutionizing Personalized Learning in Schools
  • GTA 5 is the Game of the Year for 2024 and 2025
  • Hackerrank Day 5 loops 30 days of code solution
How to download udemy paid courses for free

Pages

  • About US
  • Contact US
  • Privacy Policy

Programing Practice

  • C Programs
  • java Programs

HackerRank Solutions

  • C
  • C++
  • Java
  • Python
  • Algorithm

Other

  • Leetcode Solutions
  • Interview Preparation

Programming Tutorials

  • DSA
  • C

CS Subjects

  • Digital Communication
  • Human Values
  • Internet Of Things
©2025 Programming101 | WordPress Theme by SuperbThemes