#1591
Intervalxy
Se dă un şir de N
numere întregi. Definim costul intervalului [x, y]
, unde x
si y
apartin {1, 2, …, N}
, ca fiind suma diferenţelor dintre numărul maxim din șir, aflat în interval şi restul numerelor aflate pe pozițiile x, x+1, …, y
.
De exemplu, pentru şirul 2 4 7 4 3 -1 2 4 6
costul intervalului [3, 6]
este 15
. (explicație: 7-7+ 7-4 + 7-3 + 7+1
= 15
).
Se definesc M
operaţii de forma tip x y
, astfel: Dacă tip este 1
, atunci elementul de pe poziţia x
din șir devine y
. Dacă tip este 2
, atunci să se afişeze costul intervalului [x, y]
.
Să se determine răspunsul pentru fiecare operaţie de tipul 2
.
Info-Oltenia 2015
Problema | Intervalxy | Operații I/O |
intervalxy.in /intervalxy.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 32 MB
/
Stivă 2 MB
|
Id soluție | #2067831 | Utilizator | |
Fișier | intervalxy.cpp | Dimensiune | 1.77 KB |
Data încărcării | 13 Martie 2016, 11:43 | Scor / rezultat | 100 puncte |
intervalxy.cpp: In function 'void UpdateAIB(int, int)': intervalxy.cpp:13:12: warning: statement has no effect [-Wunused-value] for(poz;poz<=n;poz+=Lsb(poz)) sum[poz]+=x; ^ intervalxy.cpp: In function 'long long int QueryAIB(int)': intervalxy.cpp:19:12: warning: statement has no effect [-Wunused-value] for(poz;poz>=1;poz-=Lsb(poz)) ans+=sum[poz]; ^ intervalxy.cpp: In function 'int main()': intervalxy.cpp:50:39: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("intervalxy.in","r",stdin); ^ intervalxy.cpp:51:41: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("intervalxy.out","w",stdout); ^ intervalxy.cpp:52:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&n); ^ intervalxy.cpp:55:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&init[i]); ^ intervalxy.cpp:59:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&m); ^ intervalxy.cpp:62:37: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d %d",&tip,&x,&y); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 1 | 1 | ||
1 | 0 secunde | OK. | 1 | 1 | ||
2 | 0 secunde | OK. | 1 | 1 | ||
3 | 0 secunde | OK. | 1 | 1 | ||
4 | 0 secunde | OK. | 1 | 1 | ||
5 | 0 secunde | OK. | 2 | 2 | ||
6 | 0 secunde | OK. | 2 | 2 | ||
7 | 0 secunde | OK. | 2 | 2 | ||
8 | 0 secunde | OK. | 2 | 2 | ||
9 | 0 secunde | OK. | 2 | 2 | ||
10 | 0 secunde | OK. | 2 | 2 | ||
11 | 0 secunde | OK. | 2 | 2 | ||
12 | 0.004 secunde | OK. | 2 | 2 | ||
13 | 0.004 secunde | OK. | 2 | 2 | ||
14 | 0.004 secunde | OK. | 2 | 2 | ||
15 | 0.068 secunde | OK. | 5 | 5 | ||
16 | 0.052 secunde | OK. | 5 | 5 | ||
17 | 0.08 secunde | OK. | 5 | 5 | ||
18 | 0.06 secunde | OK. | 5 | 5 | ||
20 | 0.06 secunde | OK. | 5 | 5 | ||
21 | 0.08 secunde | OK. | 5 | 5 | ||
22 | 0.072 secunde | OK. | 5 | 5 | ||
23 | 0.08 secunde | OK. | 5 | 5 | ||
24 | 0.108 secunde | OK. | 5 | 5 | ||
25 | 0.096 secunde | OK. | 6 | 6 | ||
26 | 0.112 secunde | OK. | 6 | 6 | ||
27 | 0.112 secunde | OK. | 6 | 6 | ||
28 | 0.116 secunde | OK. | 6 | 6 | ||
29 | 0.12 secunde | OK. | 6 | 6 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Intervalxy face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.