Skip to content

Commit

Permalink
Add onlinekval, skolkval
Browse files Browse the repository at this point in the history
  • Loading branch information
simonlindholm committed Nov 29, 2020
1 parent 69a3473 commit ef181d1
Show file tree
Hide file tree
Showing 1,483 changed files with 12,843,153 additions and 0 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
*.aux
*.out
*.log
*.gch
*.DS_Store
*.bcf
*.xml
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# swedish-olympiad-2021-public

Testdata och domarlösningar för 2021 års programmeringsolympiad.
29 changes: 29 additions & 0 deletions onlinekval/bikupor/data/gen_abc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env python3

import sys
import random

def cmdlinearg(name, default=None):
for arg in sys.argv:
if arg.startswith(name + "="):
return arg.split("=")[1]
assert default is not None, name
return default

random.seed(int(cmdlinearg('seed', sys.argv[-1])))
n = int(cmdlinearg('n'))
k = int(cmdlinearg('k'))

k -= k%3
k3 = k//3

print(n,n-1,k)

for i in range(1, k3+1):
print(n-k+i, n-k+i+k3)
print(n-k+i, n-k+i+2*k3)
if i < k3:
print(n-k+i+k3, n-k+i+k3+1)

for i in range(1, n-k+1):
print(i, n)
66 changes: 66 additions & 0 deletions onlinekval/bikupor/data/gen_bipartish.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/usr/bin/env python3

import sys
import random

def cmdlinearg(name, default=None):
for arg in sys.argv:
if arg.startswith(name + "="):
return arg.split("=")[1]
assert default is not None, name
return default

random.seed(int(cmdlinearg('seed', sys.argv[-1])))
n = int(cmdlinearg('n'))
m = int(cmdlinearg('m'))
k = int(cmdlinearg('k'))
b = int(cmdlinearg('b'))
same = int(cmdlinearg('same'))

edge_set = set()
edges = []


stop = set()
if same == 1:
for i in range(n-k+1, n):
if i%(k//b) == (n-k)%(k//b):
stop.add(i)
b = len(stop)+1
else:
stop = set(random.sample(range(n-k+1,n), b-1))

for i in range(n-k+1, n):
if i not in stop:
edges.append((i, i+1))
edge_set.add((i, i+1))
edge_set.add((i+1, i))
m -= 1

for i in [*stop, n]:
edges.append((1, i))
edge_set.add((i, 1))
edge_set.add((1, i))
m -= 1

for i in range(2, n-k+1):
j = random.randint(n-k+1, n)
edges.append((i, j))
edge_set.add((i, j))
edge_set.add((j, i))
m -= 1

while m > 0:
i = random.randint(1, n-k)
j = random.randint(n-k+1, n)
while (i,j) in edge_set:
i = random.randint(1, n-k)
j = random.randint(n-k+1, n)
edges.append((i,j))
edge_set.add((i,j))
edge_set.add((j,i))
m -= 1

print(n,len(edges),k)
for (i,j) in edges:
print(i, j)
24 changes: 24 additions & 0 deletions onlinekval/bikupor/data/gen_doublestar.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env python3

import sys
import random

def cmdlinearg(name, default=None):
for arg in sys.argv:
if arg.startswith(name + "="):
return arg.split("=")[1]
assert default is not None, name
return default

random.seed(int(cmdlinearg('seed', sys.argv[-1])))
n = int(cmdlinearg('n'))
mid = int(cmdlinearg('mid'))
k = int(cmdlinearg('k'))

print(n,n-1,k)

for i in range(0, k-2):
print(n-1, n-2-i)
print(mid, n-1)
for i in range(1, n-k+1):
print(i, n)
35 changes: 35 additions & 0 deletions onlinekval/bikupor/data/gen_path.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/usr/bin/env python3

import sys
import random

def cmdlinearg(name, default=None):
for arg in sys.argv:
if arg.startswith(name + "="):
return arg.split("=")[1]
assert default is not None, name
return default

random.seed(int(cmdlinearg('seed', sys.argv[-1])))
n = int(cmdlinearg('n'))
k = int(cmdlinearg('k'))
b = int(cmdlinearg('b'))

big = list(range(n-k+1,n+1))
medium = list(range(n-k-b,n-k+1))
small = list(range(1,n-k-b))

print(n,n-1,k)

b_size = k//b
medium = n-k
for i in range(n-k+1,n):
if i%b_size == 0:
print(i, medium)
print(medium, i+1)
medium -= 1
else:
print(i, i+1)
while medium > 0:
print(medium, n)
medium -= 1
39 changes: 39 additions & 0 deletions onlinekval/bikupor/data/gen_random.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python3

import sys
import random

def cmdlinearg(name, default=None):
for arg in sys.argv:
if arg.startswith(name + "="):
return arg.split("=")[1]
assert default is not None, name
return default

random.seed(int(cmdlinearg('seed', sys.argv[-1])))
n = int(cmdlinearg('n'))
m = int(cmdlinearg('m'))
k = int(cmdlinearg('k'))

edge_set = set()
edges = []

for i in range(1, n):
root = random.randrange(0, i)
edges.append((root, i))
edge_set.add((root, i))
edge_set.add((i, root))

for i in range(0, m-n+1):
i = random.randrange(0, n)
j = random.randrange(0, n)
while i == j or (i,j) in edge_set:
i = random.randrange(0, n)
j = random.randrange(0, n)
edges.append((i, j))
edge_set.add((i, j))
edge_set.add((j, i))

print(n,m,k)
for (i,j) in edges:
print(i+1, j+1)
21 changes: 21 additions & 0 deletions onlinekval/bikupor/data/gen_star.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env python3

import sys
import random

def cmdlinearg(name, default=None):
for arg in sys.argv:
if arg.startswith(name + "="):
return arg.split("=")[1]
assert default is not None, name
return default

random.seed(int(cmdlinearg('seed', sys.argv[-1])))
n = int(cmdlinearg('n'))
mid = int(cmdlinearg('mid'))
k = int(cmdlinearg('k'))

print(n,n-1,k)
for i in range(0, n):
if i+1 != mid:
print(mid, i+1)
117 changes: 117 additions & 0 deletions onlinekval/bikupor/data/generator.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#!/usr/bin/env bash

PPATH=$(realpath ..)
. ../../../testdata_tools/gen.sh

#ulimit -s unlimited

use_solution nils.cpp

compile gen_random.py
compile gen_star.py
compile gen_doublestar.py
compile gen_path.py
compile gen_abc.py
compile gen_bipartish.py

MAXN=200000
MAXM=400000

samplegroup
limits max_n=$MAXN max_m=$MAXM max_k=$MAXN
sample 1
sample 2

group group1 12
limits max_n=$MAXN max_m=$MAXM max_k=1
tc g1-rand-1 gen_random n=10 m=10 k=1
tc g1-rand-2 gen_random n=$MAXN m=$MAXM k=1
tc g1-star-3 gen_star n=2 mid=2 k=1
tc g1-star-4 gen_star n=$MAXN mid=1 k=1
tc g1-star-5 gen_star n=$MAXN mid=$MAXN k=1
tc g1-star-6 gen_star n=$MAXN mid=73 k=1
tc g1-star-7 gen_star n=$MAXN mid=$(($MAXN-1)) k=1

group group2 15
limits max_n=15 max_m=$MAXM max_k=$MAXN
tc 1
tc 2
tc g2-rand-3 gen_random n=15 m=30 k=2
tc g2-rand-4 gen_random n=15 m=20 k=5
tc g2-rand-5 gen_random n=15 m=15 k=14
tc g2-rand-6 gen_random n=15 m=50 k=1
tc g2-star-7 gen_star n=2 mid=2 k=1
tc g2-star-8 gen_star n=15 mid=15 k=1
tc g2-star-9 gen_star n=15 mid=1 k=13
tc g2-doublestar-10 gen_doublestar n=14 mid=1 k=7
tc g2-path-11 gen_path n=15 k=8 b=4
tc g2-path-12 gen_path n=15 k=9 b=3
tc g2-bipart-13 gen_bipartish n=15 m=20 k=7 b=4 same=0
tc g2-bipart-14 gen_bipartish n=15 m=25 k=7 b=6 same=0
tc g2-star-15 gen_star n=15 mid=10 k=5

group group3 25
limits max_n=2000 max_m=4000 max_k=$MAXN
include_group group2

tc g3-rand-1 gen_random n=2000 m=4000 k=10
tc g3-rand-2 gen_random n=2000 m=4000 k=40
tc g3-rand-3 gen_random n=2000 m=4000 k=200
tc g3-rand-4 gen_random n=2000 m=4000 k=1000
tc g3-rand-5 gen_random n=2000 m=2100 k=1972
tc g3-doublestar-6 gen_doublestar n=2000 mid=1 k=1000
tc g3-doublestar-7 gen_doublestar n=2000 mid=3 k=1000
tc g3-doublestar-8 gen_doublestar n=2000 mid=1 k=1003
tc g3-path-9 gen_path n=2000 k=1800 b=40
tc g3-path-10 gen_path n=2000 k=1600 b=100
tc g3-abc-11 gen_abc n=2000 k=1998
tc g3-bipart-12 gen_bipartish n=2000 m=4000 k=1000 b=3 same=0
tc g3-bipart-13 gen_bipartish n=2000 m=4000 k=1000 b=7 same=0
tc g3-bipart-14 gen_bipartish n=2000 m=4000 k=1000 b=10 same=0
tc g3-bipart-15 gen_bipartish n=2000 m=4000 k=1000 b=200 same=1
tc g3-bipart-16 gen_bipartish n=2000 m=3000 k=1000 b=500 same=1
tc g3-star-17 gen_star n=2000 mid=1000 k=1000

group group4 13
limits max_n=$MAXN max_m=$MAXM max_k=15
include_group group2
include_group group1

tc g4-rand-1 gen_random n=$MAXN m=$MAXM k=15
tc g4-rand-2 gen_random n=$MAXN m=$MAXM k=5
tc g4-rand-3 gen_random n=$MAXN m=$MAXM k=1
tc g4-star-4 gen_star n=$MAXN mid=$MAXN k=15
tc g4-star-5 gen_star n=$MAXN mid=$(($MAXN-14)) k=15
tc g4-star-6 gen_star n=$MAXN mid=$(($MAXN-15)) k=15
tc g4-doublestar-7 gen_doublestar n=$MAXN mid=1 k=15
tc g4-bipart-8 gen_bipartish n=$MAXN m=$MAXM k=15 b=2 same=0
tc g4-bipart-9 gen_bipartish n=$MAXN m=$MAXM k=15 b=3 same=0
tc g4-bipart-10 gen_bipartish n=$MAXN m=$MAXM k=15 b=5 same=0
tc g4-bipart-11 gen_bipartish n=$MAXN m=$MAXM k=15 b=5 same=1
tc g4-bipart-12 gen_bipartish n=$MAXN m=$MAXM k=15 b=13 same=0

group group5 35
limits max_n=$MAXN max_m=$MAXM max_k=$MAXN
include_group group3
include_group group4

tc g5-rand-1 gen_random n=$MAXN m=$MAXM k=$(($MAXN-1))
tc g5-rand-2 gen_random n=$MAXN m=$MAXM k=$(($MAXN/2))
tc g5-rand-3 gen_random n=$MAXN m=$MAXM k=$(($MAXN/3))
tc g5-rand-4 gen_random n=$MAXN m=$MAXM k=$(($MAXN/10))
tc g5-star-5 gen_star n=$MAXN mid=1 k=$(($MAXN-2))
tc g5-doublestar-6 gen_doublestar n=$MAXN mid=1 k=$(($MAXN/2))
tc g5-doublestar-7 gen_doublestar n=$MAXN mid=3 k=$(($MAXN/2))
tc g5-doublestar-8 gen_doublestar n=$MAXN mid=1 k=$(($MAXN/2+3))
tc g5-path-9 gen_path n=$MAXN k=$(($MAXN/2)) b=300
tc g5-path-10 gen_path n=$MAXN k=$(($MAXN-10000)) b=1000
tc g5-abc-11 gen_abc n=$MAXN k=$(($MAXN-2))
tc g5-bipart-12 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=3 same=0
tc g5-bipart-13 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=10 same=0
tc g5-bipart-14 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=15 same=0
tc g5-bipart-15 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=30 same=0
tc g5-bipart-16 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=50 same=0
tc g5-bipart-17 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=100 same=1
tc g5-bipart-18 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=5000 same=1
tc g5-bipart-19 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/2)) b=$(($MAXN/3)) same=1
tc g5-bipart-20 gen_bipartish n=$MAXN m=$MAXM k=$(($MAXN/5)) b=500 same=1
2 changes: 2 additions & 0 deletions onlinekval/bikupor/data/sample/1.ans
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
2
4 6
11 changes: 11 additions & 0 deletions onlinekval/bikupor/data/sample/1.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
7 10 3
3 1
3 7
3 5
3 2
1 7
7 5
5 2
2 6
6 4
4 1
1 change: 1 addition & 0 deletions onlinekval/bikupor/data/sample/2.ans
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-1
11 changes: 11 additions & 0 deletions onlinekval/bikupor/data/sample/2.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
7 10 2
7 1
7 5
7 3
7 6
1 5
5 3
3 4
4 6
6 2
2 1
5 changes: 5 additions & 0 deletions onlinekval/bikupor/data/sample/testdata.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
on_reject: continue
range: 0 0
accept_score: 0
grader_flags: first_error
input_validator_flags: max_n=200000 max_m=400000 max_k=200000
2 changes: 2 additions & 0 deletions onlinekval/bikupor/data/secret/group1/001-g1-rand-1.ans
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1
1
Loading

0 comments on commit ef181d1

Please sign in to comment.