Skip to content

Instantly share code, notes, and snippets.

View gbrls's full-sized avatar
🏴‍☠️
da lama ao caos

Gabriel Schneider gbrls

🏴‍☠️
da lama ao caos
View GitHub Profile
@gbrls
gbrls / .vimrc
Last active August 30, 2019 12:21
my condensed vim config
" Install plugins
"call plug#begin('~/.vim/plugged')
"Plug 'sickill/vim-monokai'
"call plug#end()
set t_Co=256
let g:rehash256 = 1
@gbrls
gbrls / main.c
Last active December 18, 2019 23:20
bitmask tricks
#include <stdio.h>
/*
Este é um exemplo com algumas aplicações de bitmasks e suas operações
a << b (shift esquerda) : move os bits de 'a' 'b' posições à esquerda. Ex.: 0110 << 2 = 011000
é equivalente a multiplicar 'a' por 2^'b'.
a >> b (shift direita) : move os bits de 'a' 'b' posições à direita. Ex.: 0110 >> 2 = 01
é equivalente a dividir 'a' por 2 'b' vezes.
@gbrls
gbrls / obi2018-baldes.md
Last active February 26, 2020 02:18
[BLOG] soluções obi

Enunciado
Na minha primeira leitura, vi que esta é uma questão clássica de segtree. Um vetor de tamanho 10^5 e 10^5 queries dentro desse intervalo. Iremos fazer uma segtree para o mínimo num intervalo e outra para o máximo, sendo a resposta da query em um intervalo o max-min. Para simplificar isso, podemos guardar as duas árvores apenas em um vetor de pairs.

Porém após implementar a primeira solução e não funcionar fiz uma segunda leitura e percebi que o max e o min não podem estar no mesmo balde (na mesma posição no vetor). Então troquei o pair por uma struct, para guardar de qual balde o max e o min vieram. Quando o min e o max estiverem no mesmo balde temos uma certeza, um dos dois faz parte da solução. Nesse caso podemos testar, o query sem o min, mas com o max e o query sem o max, mas com o min.

@gbrls
gbrls / a.c
Created March 28, 2020 23:43
c comment macro
DEFUN ("or", For, Sor, 0, UNEVALLED, 0,
doc: /* Eval args until one of them yields non-nil, then return that value.
The remaining args are not evalled at all.
If all args return nil, return nil.
usage: (or CONDITIONS...) */)
(Lisp_Object args)
{
Lisp_Object val = Qnil;
while (CONSP (args))
@gbrls
gbrls / a.cpp
Created May 12, 2020 22:09
obi-2019-f1-soma
#include <bits/stdc++.h>
#define int long long int
using namespace std;
const int M = 5e5+20;
int n,s;
int32_t main() {
cin>>n>>s;
int ans=0;
#include <stdio.h>
#define M 101
#define N 1000001
#define mod 1000000007
int n,x;
int dp[N][M]={0};
int vec[M];
@gbrls
gbrls / a.cpp
Created May 27, 2020 08:08
Solução da OBI 2019 f2 soma
#include <bits/stdc++.h>
#define int long long int
using namespace std;
const int M = 5e5+20;
int n,s;
int32_t main() {
cin>>n>>s;
int ans=0;
@gbrls
gbrls / a.cpp
Created May 27, 2020 19:33
Copa do mundo OBI 2014 fase 1
#include <bits/stdc++.h>
#define ii pair<int,int>
using namespace std;
const int N = 105;
int ds[N];
void dsBuild() {
for(int i=0;i<N;i++) ds[i]=i;
@gbrls
gbrls / a.cpp
Created May 27, 2020 19:50
OBI 2014 fase 1 Fechadura
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,m;cin>>n>>m;
int arr[n];
for(int i=0;i<n;i++) cin>>arr[i];
@gbrls
gbrls / a.cpp
Created May 28, 2020 00:28
OBI 2014 fase 1 Cartas
#include <bits/stdc++.h>
using namespace std;
int n=5;
int main() {
int c=1,d=1;
int arr[n];
for(int i=0;i<n;i++) cin>>arr[i];