commit 3718a0d09ad652f77ec83de71f80abd48c94dd20
Author: bsandro <email@bsandro.tech>
Date: Sun, 11 Jan 2026 03:55:31 +0200
init repo
Diffstat:
5 files changed, 112 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,2 @@
+inputs/*.txt
+*.bin
diff --git a/LICENSE b/LICENSE
@@ -0,0 +1,24 @@
+BSD 2-Clause License
+
+Copyright (c) 2025, bsandro. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Makefile b/Makefile
@@ -0,0 +1,74 @@
+.SUFFIXES:
+MAKEFLAGS+=-rR
+
+UNAME:=$(shell uname -m)
+OS:=$(shell uname -s)
+
+CFLAGS=-std=c99 -Wall -Wextra -I.
+ifeq ($(DEBUG),1)
+CFLAGS+=-O0 -g
+else
+CFLAGS+=-O3 -ffast-math
+LTO=-flto
+endif
+
+ifeq ($(OS),NetBSD)
+CFLAGS+=-I/usr/pkg/include
+endif
+
+ifeq ($(OS),Darwin)
+CFLAGS+=-I/opt/homebrew/include
+endif
+
+ifeq ($(UNAME),riscv64)
+CFLAGS+=-mtune=sifive-u74
+else ifeq ($(UNAME),Power Macintosh)
+CFLAGS+=-mtune=native $(LTO)
+else ifeq ($(UNAME),i386)
+CFLAGS+=-mtune=native
+else
+CFLAGS+=-march=native $(LTO)
+endif
+
+LDFLAGS=-lc -lm
+
+ifeq ($(OS),NetBSD)
+LDFLAGS+=-L/usr/pkg/lib -Wl,-rpath,/usr/pkg/lib
+endif
+
+ifeq ($(OS),Darwin)
+LDFLAGS+=-L/opt/local/lib
+endif
+
+ifeq ($(GLPK),1)
+LDFLAGS+=-lglpk
+endif
+
+ifneq ($(shell which clang),)
+CC=clang
+else ifneq ($(shell which gcc-mp-14),)
+CC=gcc-mp-14
+else
+CC=cc
+endif
+
+.PHONY: clean
+
+%+run: %.bin
+ ./$< < inputs/$*.txt
+
+%+test: %.bin
+ ./$< < inputs/$*_test.txt
+
+%+test1: %.bin
+ ./$< < inputs/$*_test1.txt
+
+.SECONDARY:
+%: %.bin
+ @:
+
+%.bin: %.c
+ ${CC} $< $(CFLAGS) $(LDFLAGS) -o $@
+
+clean:
+ rm -f ./*.bin
diff --git a/cputime.h b/cputime.h
@@ -0,0 +1,12 @@
+#pragma once
+#include <time.h>
+static volatile double time_started = 0;
+
+void __attribute((constructor)) begin(void) {
+ time_started = clock();
+}
+
+void __attribute((destructor)) end(void) {
+ double elapsed = clock() - time_started;
+ printf("Elapsed: %f s\n", elapsed/CLOCKS_PER_SEC);
+}
diff --git a/inputs/.keep b/inputs/.keep