| Task: | Spiraali |
| Sender: | Lexa_ft |
| Submission time: | 2021-10-09 21:15:30 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 15 |
| #2 | ACCEPTED | 20 |
| #3 | ACCEPTED | 65 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | 1 | details |
| #2 | ACCEPTED | 0.08 s | 2 | details |
| #3 | ACCEPTED | 0.08 s | 3 | details |
Code
#Spiraalin dimensiot ja testien määrä
rawin=input().split(" ")
n=int(rawin[0])
t=int(rawin[1])
#Seuraavia arvoja tarvitaan usein, joten tehdään niistä vakiot
hn=int(n/2) #puolet spiraalin leveydestä ja korkeudesta
ma=n**2 #spiraalin suurin arvo
#Vastausten tallennus
ans=[]
#Loop jonka jokaisella kierroksella lasketaan annettujen koordiaattien arvo
for i in range(t):
#Koordinaatit
rawin=input().split(" ")
y=int(rawin[0])
x=int(rawin[1])
#Onko haettu arvo ensimmäisessä sarakkeessa
if(x==1):
ans.append(y)
#Onko haettu arvo viimeisessä sarakkeessa
elif(y==n):
ans.append(n+x-1)
#Edelliset tarkistukset voitaisiin laittaa seuraavista, mutta,
#koska laskut ovat monivaiheiset, on nämä parempi tehdä omilla
#Onko piste käyrällä y=-x+n tai sen alapuolella
elif(x<n-y+2):
#Onko piste käyrän y=x alapuolella ja päätetään,
#mitä spiraalin sisäistä kulmaa käytetään laskujen tekoon
if(y<=x-1):
corn=hn-y-1
#Vastatilanne
else:
corn=hn-x
#Jos haetaan pistettä (n+1, n), neq on väärin
if(corn==-1):
neq=0
#Lasketaan neq arvo nspiren ja geogebran avulla lasketulla kaavalla
else:
neq=(corn**2+corn*2+1)*4
#Lasketaan vertailukulman arvo ja siitä heatun pisteen arvo
ans.append(ma-neq-x+y+1)
#Onko piste käyrän y=-x+n yläpuolella
else:
#Onko piste käyrän y=x yläpuolella
if(y>=x):
corn=y-hn-1
#Vastatilanne
else:
corn=x-hn-1
#Lasketaan neq arvo nspiren ja geogebran avulla lasketulla kaavalla
neq=(corn**2+corn)*4
#Lasketaan vertailukulman arvo ja siitä heatun pisteen arvo
#Lasku on oikeasti muotoa ma-neq-(y-hn)+(x-hn-1)
ans.append(ma-neq-y+x-1)
#Tulostetaan arvot
for a in ans:
print(a)
Test details
Test 1
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 10 100 1 1 1 2 1 3 1 4 ... |
| correct output |
|---|
| 1 36 35 34 33 ... |
| user output |
|---|
| 1 36 35 34 33 ... Truncated |
Test 2
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 371 263 915 322 946 880 53 738 ... |
| correct output |
|---|
| 773533 312166 206053 200080 593922 ... |
| user output |
|---|
| 773533 312166 206053 200080 593922 ... Truncated |
Test 3
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 1000000000 1000 177757853 827347032 409613589 419171337 739269360 256524697 328695530 896842209 ... |
| correct output |
|---|
| 571375684522141210 967321186816598569 762879105851175000 370065046779516790 936897883750373771 ... |
| user output |
|---|
| 571375684522141210 967321186816598569 762879105851175000 370065046779516790 93689788375037 ... Truncated |
