Областная олимпиада по информатике 2020 год, 9-11 классы


Задача A. Қояндар

Ограничение по времени:
2 seconds
Ограничение по памяти:
256 megabytes

Айбарда $K$ бөлімнен тұратын бақша бар. Бақшада $n$ қояндар тұрады. Әрбір қоян бақшаның бір бөлімінде орналасқан. Кейде қояндар көршілес бөлімдерге өтуі мүмкін. Сондай-ақ, кейде Айбар оларды тамақтандыру үшін кейбір бөлімдердегі қояндардың санын білу керек. Айбарға $q$ сұраныстар берілген. Олар келесі түрде болады:
Формат входного файла
Бірінші жолда екі сан берілген - $n$ және $K$. \\ Екінші жолда $n$ сандар - әрбір қоянның бастапқыда орналасқан бөлімнің нөмірі көрсетілген.\\ Содан кейін жеке жолда сұраныстардың санын сипаттайтын $q$ саны берілген. Келесі $q$ жолдарда сұраныстардың сипаттаулары берілген. Сұраулар келесі түрде беріледі:
Формат выходного файла
Үшінші типтегі әрбір сұранысқа бөлек жолда бір сан — сұраныстың жауабын шығарыңыз.
Система оценки
Бұл есеп $3$ бөлімнен тұрады:
  1. $1 <= n, K, q <= 1000$. $20$ баллға бағаланады.
  2. $1 <= n, K, q <= 5 * 10^5$. Қояндардың көшу сұраулары жоқ. $20$ баллға бағаланады.
  3. $1 <= n, K, q <= 5 * 10^5$. $60$ баллға бағаланады.
Пример:
Вход
3 10
4 2 8
4
G 3 7
R 2
L 3
G 3 7
Ответ
1
3
( Sanjar Bidaibek )
посмотреть в олимпиаде

Комментарий/решение:

  1
2020-01-13 16:26:21.0 #

кодты корсету/жасыру

пред. Правка 2   -1
2022-01-18 11:11:12.0 #

DELETED

  2
2020-07-28 13:49:48.0 #

Дерево отрезков ;)

кодты корсету/жасыру

  0
2020-11-03 11:25:12.0 #

Кому интересно это решение через Дерево Фенвика!

кодты корсету/жасыру

  12
2021-02-23 15:41:58.0 #

кодты корсету/жасыру

  0
2021-08-29 04:42:28.0 #

Обычное дп

кодты корсету/жасыру

  0
2021-09-18 18:36:06.0 #

Решение на Python:

kr, gr = map(int, input().split())

sad=[]

z=0

schet=0

superschet=[]

sad=(input().split())

for i in range(len(sad)):

z=int(sad[i])

sad[i]=z

deis=input()

deis=int(deis)

for i in range(deis):

hod=input().split()

if(hod[0]=="G"):

for i in range(len(sad)):

if(sad[i]>=int(hod[1]) and sad[i]<=int(hod[2])):

schet+=1

superschet.append(schet)

schet=0

if(hod[0]=="R"):

sad[int(hod[1])-1]=sad[int(hod[1])-1]+1

if(hod[0]=="L"):

sad[int(hod[1])-1]=sad[int(hod[1])-1]-1

for i in range(len(superschet)):

print(superschet[i])

  0
2021-12-08 16:32:24.0 #

кодты корсету/жасыру

  0
2021-12-13 15:48:24.0 #

кодты корсету/жасыру

  0
2021-12-21 12:12:59.0 #

кодты корсету/жасыру

  0
2021-12-23 16:27:51.0 #

#python

n, k = map(int, input().split())

a = list(map(int, input().split()))

g = int(input())

b = [0]

l = []

for i in range(n):

b.append(a[i])

for i in range(g):

s = input().split()

w = 0

if 'G' in s:

x = int(s[1])

y = int(s[2])

for j in b:

if x <= j <= y:

w += 1

l.append(w)

if 'R' in s:

x = int(s[1])

b[x] = b[x] + 1

if 'L' in s:

x = int(s[1])

b[x] = b[x] - 1

print(*l)

  0
2022-02-24 06:17:35.0 #

Не за что)

кодты корсету/жасыру