Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
LIKEHELL - Największa różnica |
Masz dany ciąg liczb A zawierający N elementów (indeksowanych od 1). Napisz program umożliwiający wykonywanie następujących operacji na tym ciągu:
Query() - znajdź i wypisz największą X, gdzie X = aj-ai, j ≥ i, oraz aj i ai są elementami ciągu A.
Update(p, v) - Zmień wartość elementu ap na v.
Wejście
W pierwszej linii dwie liczby: N i Q oznaczające kolejno ilość elementów w ciągu A oraz ilość zapytań.
W kolejnej linii znajduje się N liczb z przedziału [1..109], gdzie i'ta liczba oznacza wartość i'tego elementu ciągu A.
W kolejnych Q liniach znajdują się zapytania opisane w następujący sposób:
q - Jeden znak 'q' oznacza, że program ma zwrócić wartość zapytania Query().
u p v - Znak 'u' oraz dwie liczby p i v oznaczają, że program ma wykonać operację Update(p,v).
Wyjście
Dla każdego zapytania Query() znajdź i wypisz największą X.
Wszystkie X mają być oddzielone (enterem).
Limity
1 ≤ N ≤ 50000 (długość ciągu A)
1 ≤ ai ≤ 109 (wartości elementów ciągu A)
1 ≤ Q ≤ 50000 (ilość zapytań)
1 ≤ p ≤ N (indeks elementu któremu należy zmienić wartość w operacji Update(p,v))
1 ≤ v ≤ 109 (wartość nadawana elementowi ap podczas wykonywania operacji Update(p,v))
Przykłady
Wejście 1:
10 6
2 6 8 5 1 5 6 5 3 3
q
u 5 10
q
u 1 5
u 5 3
q
Wyjście 1:6
8
3
Wejście 2:
5 7
3 6 6 2 6
q
u 2 7
u 1 1
q
u 2 10
q
u 2 3
Wyjście 2:
4
6
9
Dodane przez: | Bartek |
Data dodania: | 2014-08-16 |
Limit czasu wykonania programu: | 1s-5s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM64 GOSU |
Pochodzenie: | Własny pomysł |