1
0
Fork 0

Thank you Corona for giving me some time to do this

This commit is contained in:
Nguyễn Gia Phong 2020-02-17 20:29:47 +07:00
parent 82e6cf7d10
commit 1f9cdd4cce
6 changed files with 167 additions and 0 deletions

4
codechef/cash.py Executable file
View File

@ -0,0 +1,4 @@
#!/usr/bin/env python
for t in range(int(input())):
n, k = map(int, input().split())
print(sum(map(int, input().split())) % k)

48
codechef/chefrail.py Executable file
View File

@ -0,0 +1,48 @@
#!/usr/bin/env python
from itertools import count, takewhile
from typing import Iterator, Set
def binary(i: int, h: int) -> Iterator[int]:
while h % i == 0:
yield i
i <<= 1
def rail(x: Set[int], y: Set[int]) -> int:
result = 0
for h in map(abs, x):
result += -h in y and h in y
if h < 2: continue
k, z = h, list(takewhile(lambda j: j < h, binary(1, h*h)))
while k % 2 == 0: k >>= 1
for i in takewhile(lambda j: j*j <= k, count(3, 2)):
start, stop = 0, len(z)
while k % i == 0:
k //= i
z.extend(i*j for j in z[start:stop] if i*j < h)
start, stop = stop, len(z)
z.extend(i*j for j in z[start:stop] if i*j < h)
start, stop = stop, len(z)
if k > 1:
start, stop = 0, len(z)
z.extend(k*j for j in z[start:stop] if k*j < h)
start, stop = stop, len(z)
z.extend(k*j for j in z[start:stop] if k*j < h)
for i in z:
j = h * h // i
result += (-i in y and j in y) + (i in y and -j in y)
return result
for t in range(int(input())):
input()
x = set(map(int, input().split()))
y = set(map(int, input().split()))
zero = 0 in x or 0 in y
if 0 in x: x.remove(0)
if 0 in y: y.remove(0)
print((zero and len(x)*len(y)) + rail(x, y) + rail(y, x))

20
codechef/longcook.py Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env python
from calendar import isleap
from datetime import datetime
OVERLAP = [datetime(i or 400, 2, 7).weekday()
in ([4] if isleap(i or 400) else [4, 5]) for i in range(400)]
OOP = sum(OVERLAP)
def longcook(start, end):
delta = end - start
if delta <= 0: return 0
return delta//400*OOP + sum(OVERLAP[y % 400]
for y in range(start, start + delta%400))
for t in range(int(input())):
m1, y1 = map(int, input().split())
m2, y2 = map(int, input().split())
print(longcook(y1+(m1>2), y2+(m2!=1)))

36
codechef/nochange.lua Executable file
View File

@ -0,0 +1,36 @@
#!/usr/bin/env lua
local read = io.read
local print = print
local table = {concat = table.concat, insert = table.insert}
for t = 1, read('*n') do
local n, p = read('*n', '*n')
local d = {}
for i = 1, n do table.insert(d, read('*n')) end
local unanswered, previous = true, 1
for k, v in ipairs(d) do
if p % v ~= 0 then
local c = {}
for i = 1, k-1 do table.insert(c, 0) end
table.insert(c, p//v+1)
for i = k+1, n do table.insert(c, 0) end
print(('YES %s'):format(table.concat(c, ' ')))
unanswered = false
break
end
if v % previous ~= 0 then
local c = {}
for i = 1, k-2 do table.insert(c, 0) end
table.insert(c, v//previous+1)
table.insert(c, p//v-1)
for i = k+1, n do table.insert(c, 0) end
print(('YES %s'):format(table.concat(c, ' ')))
unanswered = false
break
end
previous = v
end
if unanswered then print('NO') end
end

5
codechef/snug-fit.py Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env python
for t in range(int(input())):
input()
print(sum(map(min, sorted(map(int, input().split())),
sorted(map(int, input().split())))))

54
codechef/theatre.cc Normal file
View File

@ -0,0 +1,54 @@
#include <algorithm>
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
int
main()
{
int k, total_profit {0};
string movies {"ABCD"};
vector<int> showtimes {3, 6, 9, 12};
vector<int> prices {25, 50, 75, 100};
cin >> k;
while (k--)
{
map<char, map<int, int>> requests;
int n, t, profit {-400};
char m;
cin >> n;
while (n--)
{
cin >> m >> t;
requests[m][t]++;
}
for (int i = 0; i < 24; ++i)
{
for (int j = 0; j < 24; ++j)
{
vector<int> tickets {requests[movies[0]][showtimes[0]],
requests[movies[1]][showtimes[1]],
requests[movies[2]][showtimes[2]],
requests[movies[3]][showtimes[3]]};
int p {0};
sort (tickets.begin(), tickets.end());
for (int l = 0; l < 4; ++l)
p += tickets[l] ? tickets[l]*prices[l] : -100;
profit = max (p, profit);
next_permutation (showtimes.begin(), showtimes.end());
}
next_permutation (movies.begin(), movies.end());
}
cout << profit << endl;
total_profit += profit;
}
cout << total_profit << endl;
}