Skip to content

Instantly share code, notes, and snippets.

const int mod = 998244353;
using lint = long long;
lint ipow(lint x, lint p){
lint ret = 1, piv = x;
while(p){
if(p & 1) ret = ret * piv % mod;
piv = piv * piv % mod;
p >>= 1;
}
return ret;
#include <bits/stdc++.h>
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
using namespace std;
using lint = long long;
using pi = array<lint, 2>;
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define cr(v, n) (v).clear(), (v).resize(n);
#include <bits/stdc++.h>
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
#define cr(v, n) (v).clear(), (v).resize(n);
using namespace std;
using lint = long long;
using pi = array<lint, 2>;
const int MAXN = 100005;
struct elem {
@koosaga
koosaga / F_tle.jl
Last active December 10, 2023 00:13
using StaticArrays;
using CSV, DataFrames, JuMP, SCIP;
io = open("input.txt", "r");
io2 = open("output.txt", "w");
t = parse(Int64, readline(io));
for i in 1:t
n, m, k = [parse(Int64, x) for x in split(readline(io))]
adj = zeros(Int, n, n)
using StaticArrays;
using CSV, DataFrames, JuMP, SCIP;
io = open("input.txt", "r");
io2 = open("output.txt", "w");
t = parse(Int64, readline(io));
for i in 1:t
n, m, k = [parse(Int64, x) for x in split(readline(io))]
adj = Vector{Vector{Int64}}(undef, n)
#include <bits/stdc++.h>
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
using namespace std;
using lint = long long;
using llf = long double;
using pi = array<int, 2>;
// Let a matrix be monotone if Opt(i) <= Opt(i + 1) for all rows i.
// Given a totally monotone matrix (where every 2x2 submatrix is monotone), find the list of row optima positions.
@koosaga
koosaga / boj12795.cpp
Last active November 14, 2022 15:09
Kinetic Segment Tree
#include <bits/stdc++.h>
using namespace std;
using pi = pair<int, int>;
using lint = long long;
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
const int MAXT = 530000;
const lint inf = 4e18;
struct line {
struct sfxarray{
int ord[MAXN], nord[MAXN], cnt[MAXN], aux[MAXN];
void solve(int n, char *str, int *sfx, int *rev){
int p = 1;
memset(ord, 0, sizeof(ord));
for(int i=0; i<n; i++){
sfx[i] = i;
ord[i] = str[i];
}
int pnt = 1;
const int MAXN = 100005, MAXC = 26;
struct aho_corasick{
int trie[MAXN][MAXC], piv; // trie
int fail[MAXN]; // failure link
int term[MAXN]; // output check
void init(vector<string> &v){
memset(trie, 0, sizeof(trie));
memset(fail, 0, sizeof(fail));
memset(term, 0, sizeof(term));
#include <cstdio>
#include <vector>
using namespace std;
vector<int> v;
int n,adj[1005][1005];
void f(int x){
for (int i=1; i<=n; i++) {
if(adj[x][i]){