GeeksForGeeks - POTD | GFG POTD Answer
قناة بسيطة
1 218
المشتركون
لا توجد بيانات24 ساعات
-97 أيام
-5730 أيام
أرشيف المشاركات
class Solution
{
public:
typedef pair pll;
pll minmax(long long pre[], int l, int r) {
int lo = l, hi = r-1;
long long minSum = 0, maxSum = pre[r] - pre[l-1];
while(lo <= hi) {
int mid = lo + (hi - lo) / 2;
long long lsum = pre[mid] - pre[l-1], rsum = pre[r] - pre[mid];
if(abs(rsum - lsum) < maxSum - minSum) {
minSum = min(lsum, rsum);
maxSum = max(lsum, rsum);
}
if(lsum < rsum) lo = mid + 1;
else hi = mid - 1;
}
return {minSum, maxSum};
}
long long minDifference(int N, vector &A) {
// code here
long long presum[N+1];
presum[0] = 0;
for(int i = 1; i <= N; i++) presum[i] = presum[i-1] + A[i-1];
long long ans = presum[N];
for(int i = 1; i < N-2; i++) {
pll mml = minmax(presum, 1, i+1), mmr = minmax(presum, i+2, N);
ans = min(ans, max(mml.second, mmr.second) - min(mml.first, mmr.first));
}
return ans;
}
};
class Solution{
public:
int dominantPairs(int n,vector &arr){
sort(arr.begin(), arr.begin()+n/2);
sort(arr.begin()+n/2, arr.end());
int ans=0;
for(int i=n/2;i
Now We Are All 100 ❤️
New Milestone Achieved 🏆✨
Thanks For That Much Support 🙌🏼💞
class Solution {
public:
int solve(int a, int b, int c) {
int maxi = max(a,max(b,c));
int rem = a+b+c - maxi; // b+c;
if(2*rem+2
class Solution {
public:
int maxIntersections(vector> lines, int N) {
map mp;
for(auto it:lines)
{
// (s,e) freq[s]++, freq[e+1]--
int s=it[0],e=it[1];
mp[s]++;
mp[e+1]--;
}
int maxi=1;
int presum=0; // it shows the frequency of every element
for(auto it:mp)
{
presum+=it.second;
maxi=max(maxi,presum);
}
return maxi;
}
};
int done=0;
vectorf, inv;
class Solution {
const long long M=1e9+7;
public:
int bestNumbers(int N, int A, int B, int C, int D) {
if(!done) pre();
if(A==B)
{
long long sum=(long long)N*A;
bool flag=false;
while(sum>0)
{
if((sum%10)==C or (sum%10)==D)
{
flag=true;
break;
}
sum/=10;
}
if(flag) return 1;
return 0;
}
long long ans=0;
for(long long i=0;i<=N;i++)
{
long long sum = i*A+(N-i)*B;
bool flag=false;
while(sum>0)
{
if((sum%10)==C or (sum%10)==D)
{
flag=true;
break;
}
sum/=10;
}
if(flag) ans=(ans+nCr(N, i))%M;
}
return ans;
}
void pre()
{
done=1;
f.resize(1e5+1, 1);
inv.resize(1e5+1);
for(int i=2;i<=1e5;i++) f[i]=(f[i-1]*i)%M;
inv[1e5]=fastpow(f[1e5], M-2);
for(int i=1e5-1;i>=0;i--) inv[i]=(inv[i+1]*(i+1))%M;
}
long long fastpow(long long a, long long n)
{
long long res=1;
while(n>0)
{
if(n&1) res=(res*a)%M;
a=(a*a)%M;
n>>=1;
}
return res;
}
long long nCr(int n, int r)
{
return (((f[n]*inv[n-r])%M)*inv[r])%M;
}
};
