SAVE AND COST (C++)
#include <vector>
using namespace std;
typedef long long ll;
bool fn(vector<int>& a, vector<int>& b, ll x, ll mid) {
int n = a.size();
vector<int> vis(n, 0);
ll sum = 0;
for (int i = 0; i < n; i++) {
if (b[i] <= mid) {
sum += a[i];
vis[i] = 1;
}
}
ll mx = 0;
for (int i = 0; i < n; i++) {
if (!vis[i]) {
mx = max(mx, static_cast<ll>(a[i]));
}
}
return sum + mx >= x;
}
int scoreAndCost(int n, vector<int>& a, vector<int>& b, int x) {
ll ans = -1;
ll s = 0, e = 1e9;
while (s <= e) {
ll mid = (s + e) / 2;
if (fn(a, b, x, mid)) {
ans = mid;
e = mid - 1;
}
else {
s = mid + 1;
}
}
return static_cast<int>(ans);
}
SUPER MOVEMENT (JAVA)
long long superMovement(int n, vector<int> &a, int k) {
vector<long long>v(k-1,INT_MAX);
long long ans=0;
int j=0;
for(int i=0;i<n-1;i++){
if(j==k-1){
j=0;
continue;
}
long long x=abs(a[i]-a[i+1]);
v[j]=min(v[j],x);
j++;
}
for(auto i:v){
ans+=i;
}
return ans;
}TERMINAL PYTHON
def terminalDefence(n, m, a, h, b, k):
i, j, l = 0, 0, 0
C = [0] * (n + m)
while i < m or j < n:
if i != m and (j == n or a[i] < b[j]):
C[l] = (h[i] + k - 1) // k
i += 1
else:
C[l] = -1
j += 1
l += 1
cnt = req = 0
left = right = 0
for i in range(n + m):
if C[i] == -1:
cnt += 1
if cnt + req > n:
right = n - cnt
else:
left += 1
elif C[i] > left + right:
if cnt + req > n or C[i] > n: return 0
req = max(req, C[i] - left)
return 1
BINARY C++
struct segtree00 {
int len;
vector<int> v, lazy;
void init(int l) {
len = l;
lazy = v = vector<int>(4 * len);
}
void build(int id, int l, int r) {
if (l == r) {
v[id] = 0;
return;
}
int mid = (l + r) >> 1;
build(id << 1, l, mid);
build(id << 1 | 1, mid + 1, r);
v[id] = v[id << 1] + v[id << 1 | 1];
}
int query(int id, int tl, int tr, int qstart, int qend) {
if (lazy[id] != 0) {
v[id] = tr - tl + 1 - v[id];
if (tl != tr) {
lazy[id << 1] ^= lazy[id];
lazy[id << 1 | 1] ^= lazy[id];
}
lazy[id] = 0;
}
if (qstart > tr || qend < tl) {
return 0;
}
if (qstart <= tl && tr <= qend) {
return v[id];
}
int mid = (tl + tr) >> 1;
int lc = query(id << 1, tl, mid, qstart, qend);
int rc = query(id << 1 | 1, mid + 1, tr, qstart, qend);
int ans = lc + rc;
return ans;
}
void rupd(int id, int tl, int tr, int qstart, int qend, int upd) {
if (lazy[id] != 0) {
v[id] = tr - tl + 1 - v[id];
if (tl != tr) {
lazy[id << 1] ^= lazy[id];
lazy[id << 1 | 1] ^= lazy[id];
}
lazy[id] = 0;
}
if (qstart > tr || qend < tl) {
return;
}
if (qstart <= tl && tr <= qend) {
if (upd != 0) {
v[id] = tr - tl + 1 - v[id];
if (tl != tr) {
lazy[id << 1] ^= upd;
lazy[id << 1 | 1] ^= upd;
}
}
return;
}
int mid = (tl + tr) >> 1;
rupd(id << 1, tl, mid, qstart, qend, upd);
rupd(id << 1 | 1, mid + 1, tr, qstart, qend, upd);
v[id] = v[id << 1] + v[id << 1 | 1];
}
};
vector<int> binaryQueries(int n, vector<int> &a, int q, vector<vector<int>>
&queries) {
vector<segtree00> s(32);
for (int i = 0; i < 32; i++) {
s[i].init(n);
s[i].build(1, 0, n - 1);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < 32; j++) {
if ((1LL << j) & a[i]) {
s[j].rupd(1, 0, n - 1, i, i, 1);
}
}
}
vector<int> ans(q);
for (int i = 0; i < q; i++) {
long long x = 0;
for (int j = 0; j < 32; j++) {
if ((1LL << j) & queries[i][2]) {
s[j].rupd(1, 0, n - 1, queries[i][0], queries[i][1], 1);
}
long long y = s[j].query(1, 0, n - 1, queries[i][0], queries[i][1]);
if (y > 0) {
x |= (1LL << j);
}
}
ans[i] = x;
}
return ans;
}
MAXI AND c++
long long maxiAnd(int n,vector<int> &a){
// Write your code here
sort(a.begin(),a.end());
long long int ans =0;
int i=0;
for(int j=31;j>=0;j--)
{
int x=a[0]>>j;
if(x&1)
{
i=j;
break;
}
}
long long int result =0;
for(int j=i;j>=0;j--)
{
result += pow(2,j);
}
return result;
}
SECRET JAVA
public class Solution {
static int secretCode(int n, int []a) {
int sum=0;
for(int i=0;i<n;i++){
sum+=a[i];
if(i>=2){
if(sum%10==0){
return 1;
}
sum -= a[i-2];
}
}
return 0;
}
}