OA Help : Interview Help
Открыть в Telegram
Codeforces Codechef Leetcode AtCoder GFG CodeStudio All Contests Solutions available.
Больше898
Подписчики
+124 часа
-47 дней
-1330 день
Архив постов
Those who are from NITs or IIITs please dm me, I need little bit of your help.
@cp_wala
void LockpickingChef()
{
int n, m;
cin >> n >> m;
string s, k;
cin >> s;
cin >> k;
int ans = INT_MAX;
for (int i = 0; i < n; i++)
{
int curr = 0;
if (i + m - 1 == n)
{
cout << ans << endl;
return;
}
for (int j = i; j < i + m; j++)
curr += min((10 + (k[j - i] - '0') - (s[j] - '0')) % 10, (10 - (k[j - i] - '0') + (s[j] - '0')) % 10);
ans = min(ans, curr);
}
cout << ans << endl;
}
// Work Smarter, Not Harder
void code_iske_andar_hai()
{
int l, v1, v2;
cin >> l >> v1 >> v2;
int t1 = (l + v1 - 1) / v1;
if (v1 == 1)
t1 = l;
int t2 = (l + v2 - 1) / v2;
if (v2 == 1)
t2 = l;
cout << abs(t1 - t2)-1 << endl;
}
class Solution
{
public:
int maxNumberOfAlloys(int n, int k, int budget, vector> &composition, vector &stock, vector &cost)
{
vector> required_stock(k, vector(n, 0));
for (int i = 0; i < k; ++i)
for (int j = 0; j < n; ++j)
required_stock[i][j] = (long long)composition[i][j] * (long long)cost[j];
long long left = 0, right = 1e9, result = 0;
while (left <= right)
{
long long mid = left + (right - left) / 2;
bool can_create = false;
for (int machine = 0; machine < k; ++machine)
{
long long total_cost = 0;
for (int i = 0; i < n; ++i)
{
long long diff = mid * composition[machine][i] - stock[i];
if (diff > 0)
total_cost += diff * cost[i];
}
if (total_cost <= budget)
{
can_create = true;
break;
}
}
if (can_create)
{
result = mid;
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return result;
}
};
// C
class Solution
{
public:
int countWays(vector &arr)
{
int n = arr.size(), answer = 0;
sort(arr.rbegin(), arr.rend());
reverse(arr.begin(), arr.end());
if (arr[0] > 0)
answer = 1;
if (n > arr[n - 1])
answer++;
for (int idx = 0; idx < n - 1; idx++)
if ((idx + 1) > arr[idx])
if ((idx + 1) < arr[idx + 1])
answer++;
return answer;
}
};
// B
class Solution
{
int bits[1001];
void init()
{
bits[0] = 0;
for (int idx = 1; idx < 1001; idx++)
bits[idx] = (idx & 1) + bits[idx / 2];
}
public:
int sumIndicesWithKSetBits(vector &arr, int k)
{
init();
int sm = 0;
for (int idx = 0; idx < arr.size(); idx++)
if (bits[idx] == k)
sm += arr[idx];
return sm;
}
};
// A
S100
#include <iostream>
#include <string>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int N;
cin >> N;
string s;
cin >> s;
bool flag = false;
for (int i = 0; i < N; ++i)
if (s[i] == '0' || flag)
s[i] = '0';
else if (i == N - 2)
break;
else
s[i] = '1', flag = true;
cout << s << endl;
}
}
void SURPLUS()
{
int a1, a2, b1, b2;
cin >> a1 >> a2 >> b1 >> b2;
int ans = a2 + b2 - b1 - a1;
if (ans > 0)
yes;
else
no;
}
#include <iostream>
#include <set>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
set<int> s;
for (int i = 0; i < n; i++)
{
int num;
cin >> num;
s.insert(num);
}
int mex = 0;
set<int> mis;
for (int i = 0; i <= n + 1; i++)
{
if (s.find(i) == s.end())
{
mis.insert(i);
}
}
bool f = true;
int c = 0;
while (c < 2 * n + 1 && f)
{
int v = *mis.begin();
cout << *mis.begin() << endl;
mis.erase(mis.begin());
cout.flush();
int y;
cin >> y;
if (y == -1)
{
f = false;
}
else
{
s.erase(y);
mis.insert(y);
}
c += 1;
}
}
return 0;
}
