| Task: | Niitty | 
| Sender: | Lelleri | 
| Submission time: | 2024-11-03 00:23:59 +0200 | 
| Language: | Python3 (PyPy3) | 
| Status: | READY | 
| Result: | 20 | 
| group | verdict | score | 
|---|---|---|
| #1 | ACCEPTED | 4 | 
| #2 | ACCEPTED | 6 | 
| #3 | ACCEPTED | 10 | 
| #4 | TIME LIMIT EXCEEDED | 0 | 
| #5 | TIME LIMIT EXCEEDED | 0 | 
| #6 | TIME LIMIT EXCEEDED | 0 | 
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | 1, 2, 3, 4, 5, 6 | details | 
| #2 | ACCEPTED | 0.05 s | 1, 2, 3, 4, 5, 6 | details | 
| #3 | ACCEPTED | 0.06 s | 1, 2, 3, 4, 5, 6 | details | 
| #4 | ACCEPTED | 0.04 s | 1, 2, 3, 4, 5, 6 | details | 
| #5 | ACCEPTED | 0.04 s | 1, 2, 3, 4, 5, 6 | details | 
| #6 | ACCEPTED | 0.10 s | 2, 3, 4, 5, 6 | details | 
| #7 | ACCEPTED | 0.08 s | 2, 3, 4, 5, 6 | details | 
| #8 | ACCEPTED | 0.09 s | 2, 3, 4, 5, 6 | details | 
| #9 | ACCEPTED | 0.05 s | 2, 3, 4, 5, 6 | details | 
| #10 | ACCEPTED | 0.39 s | 3, 4, 5, 6 | details | 
| #11 | ACCEPTED | 0.39 s | 3, 4, 5, 6 | details | 
| #12 | ACCEPTED | 0.31 s | 3, 4, 5, 6 | details | 
| #13 | ACCEPTED | 0.11 s | 3, 4, 5, 6 | details | 
| #14 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #15 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #16 | TIME LIMIT EXCEEDED | -- | 4, 5, 6 | details | 
| #17 | ACCEPTED | 0.39 s | 4, 5, 6 | details | 
| #18 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #19 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #20 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #21 | TIME LIMIT EXCEEDED | -- | 5, 6 | details | 
| #22 | TIME LIMIT EXCEEDED | -- | 6 | details | 
| #23 | TIME LIMIT EXCEEDED | -- | 6 | details | 
| #24 | TIME LIMIT EXCEEDED | -- | 6 | details | 
| #25 | TIME LIMIT EXCEEDED | -- | 6 | details | 
Code
import random
import time
import sys
sys.setrecursionlimit(15000)
n = int(input())
rows = [[l for l in input()] for _ in range(n)]#[["ABCDEFGHIJKLMNOPQRSTUVWXYZ"[random.randint(0, 25)] for _ in range(n)] for _ in range(n)]#[["A", "A", "B"], ["A", "B", "A"], ["A", "A", "A"]]### ###
species_to_number = {}
for y in range(len(rows)):
    for x in range(len(rows)):
        if(rows[y][x] not in species_to_number.keys()):
            species_to_number[rows[y][x]] = len(species_to_number.keys())+1
        rows[y][x] = species_to_number[rows[y][x]]
    #print(" ".join(map(str, rows[y])))
existing_species_mask = int("0b"+"1"*len(species_to_number.keys()), 2)
#[print(" ".join(map(str, rows[i]))) for i in range(n)]
#start_time = time.time()
fitting_fences = 0
found_species_per_row = []
for row in rows:
    row_mask = 0
    for item in row:
        row_mask = row_mask | (2**item)>>1
    found_species_per_row.append(row_mask)
for y1 in range(len(rows)):
    for y2 in range(len(rows)-1, y1-1, -1):
        mask = 0
        for row_mask in found_species_per_row[y1:y2+1]:
            mask = mask | row_mask
            if(mask == existing_species_mask):
                break
        else:
            break
        columns = [list(e) for e in zip(*rows[y1:y2+1][::-1])]
        found_species_per_column = []
        for column in columns:
            column_mask = 0
            for item in column:
                column_mask = column_mask | (2**item)>>1
            found_species_per_column.append(column_mask)
        for x1 in range(len(columns)):
            for x2 in range(len(columns)-1, x1-1, -1):
                mask = 0
                for column_mask in found_species_per_column[x1:x2+1]:
                    mask = mask | column_mask
                    if(mask == existing_species_mask):
                        break
                else:
                    break
                fitting_fences += 1
print(fitting_fences)
#print(time.time()-start_time)
Test details
Test 1
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 TNCTNPNTPC NPPNTNTPTP NTNTTCNTCT NPCPNPPNTT ...  | 
| correct output | 
|---|
| 2035 | 
| user output | 
|---|
| 2035 | 
Test 2
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 NFWQLWNWYS DZOQJVXFPJ CNHXPXMCQD QRTBVNLTQC ...  | 
| correct output | 
|---|
| 9 | 
| user output | 
|---|
| 9 | 
Test 3
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX ...  | 
| correct output | 
|---|
| 3025 | 
| user output | 
|---|
| 3025 | 
Test 4
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 10 FFFFFFFFFF FFFFFCFFFF FFFFFFJFFF FFFFFFFFFF ...  | 
| correct output | 
|---|
| 12 | 
| user output | 
|---|
| 12 | 
Test 5
Group: 1, 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 1 X  | 
| correct output | 
|---|
| 1 | 
| user output | 
|---|
| 1 | 
Test 6
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 BBCBUBOUOBBCUUBBCOUO BOUCOOCUBCOOOCOBOCUO UCCUUUOBCOCBCBUBUCOO BUOBUCUCUOOBCOOUBUOO ...  | 
| correct output | 
|---|
| 38724 | 
| user output | 
|---|
| 38724 | 
Test 7
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 CBGLSHGZHYZDWBNDBJUG SMUXOJQYPXZDTMJUIWOJ XIDSTNBGHKRKOVUVMINB MTQGCFRUHQKALXRNCQGS ...  | 
| correct output | 
|---|
| 8334 | 
| user output | 
|---|
| 8334 | 
Test 8
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK ...  | 
| correct output | 
|---|
| 44100 | 
| user output | 
|---|
| 44100 | 
Test 9
Group: 2, 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 20 AAAAAAAAXAAAAAAAAAAA AAAWAAAAAAAAAAAAAOAA AAAAAAAAAAAAAAAAAPAA AAAAAAAAKAAAAAAAAAAZ ...  | 
| correct output | 
|---|
| 18 | 
| user output | 
|---|
| 18 | 
Test 10
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 GRGREEEGREGXRXXEGXXREXGRRRGRRR...  | 
| correct output | 
|---|
| 1584665 | 
| user output | 
|---|
| 1584665 | 
Test 11
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 AITIISJUHCCRZNKSDCNQKYSQRINFWJ...  | 
| correct output | 
|---|
| 1077746 | 
| user output | 
|---|
| 1077746 | 
Test 12
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO...  | 
| correct output | 
|---|
| 1625625 | 
| user output | 
|---|
| 1625625 | 
Test 13
Group: 3, 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 50 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...  | 
| correct output | 
|---|
| 1680 | 
| user output | 
|---|
| 1680 | 
Test 14
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 NNCMDCDDCCNNNDNCMMNCDCDCCDCDNM...  | 
| correct output | 
|---|
| 25325366 | 
| user output | 
|---|
| (empty) | 
Test 15
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 LIMQQIHASECROEVILNVULGWZJPPKOG...  | 
| correct output | 
|---|
| 22342463 | 
| user output | 
|---|
| (empty) | 
Test 16
Group: 4, 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT...  | 
| correct output | 
|---|
| 25502500 | 
| user output | 
|---|
| (empty) | 
Test 17
Group: 4, 5, 6
Verdict: ACCEPTED
| input | 
|---|
| 100 QXQQQQQQQQQQQQQQQQQQQQQQQQQQQQ...  | 
| correct output | 
|---|
| 25650 | 
| user output | 
|---|
| 25650 | 
Test 18
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 NAANANMMKNKKAKMKMAKNKMNKMMNNAA...  | 
| correct output | 
|---|
| 403292767 | 
| user output | 
|---|
| (empty) | 
Test 19
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 OMYWATTLURKQPTKEFMGGYAOONXWVSC...  | 
| correct output | 
|---|
| 388111321 | 
| user output | 
|---|
| (empty) | 
Test 20
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...  | 
| correct output | 
|---|
| 404010000 | 
| user output | 
|---|
| (empty) | 
Test 21
Group: 5, 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 200 LLLLLLLLLLLLLLLLLHLLLLLLLLLLLL...  | 
| correct output | 
|---|
| 14159445 | 
| user output | 
|---|
| (empty) | 
Test 22
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 VVHWVUHVHUWWWVUUUWVUUHUUWHWUVW...  | 
| correct output | 
|---|
| 15683003812 | 
| user output | 
|---|
| (empty) | 
Test 23
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 OIMZGEQSBMBDSDXSWRFNKSGFEBBTJE...  | 
| correct output | 
|---|
| 15575906951 | 
| user output | 
|---|
| (empty) | 
Test 24
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 IIIIIIIIIIIIIIIIIIIIIIIIIIIIII...  | 
| correct output | 
|---|
| 15687562500 | 
| user output | 
|---|
| (empty) | 
Test 25
Group: 6
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 500 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...  | 
| correct output | 
|---|
| 3058970930 | 
| user output | 
|---|
| (empty) | 
