Tin học trẻ 2024 - Chuẩn hóa

Xem dạng PDF

Gửi bài giải

Điểm: 1500 (OI)
Giới hạn thời gian: 3.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Tiến là một công nhân làm việc ở nhà máy socola QH. Công việc của anh là điều chỉnh nhiệt độ của hồ nhiệt độ. Hôm nay anh nhận được một đơn đặt hàng rất lớn đến từ Khoa. Vì là đơn đặt hàng rất lớn nên nhà máy đã đưa ra một quy trình để chuẩn hóa nhiệt độ như sau:

Cho hai dãy số nguyên độ dài N (N105):

  • Dãy A gồm N số nguyên A=(a1,a2,a3,,aN) (|ai|109).
  • Dãy T gồm N số nguyên T=(t1,t2,t3,,tN) (1ti3).

Quy trình chuẩn hóa sẽ gồm N bước, ở bước thứ i bạn cần phải:

  • Với ti=1 thì bạn cần tăng nhiệt độ của hồ nhiệt lên ai đơn vị nhiệt độ.
  • Với ti=2, nếu nhiệt độ hồ nhiệt lớn hơn ai thì bạn không làm gì cả, ngược lại thì thay đổi nhiệt độ hồ nhiệt thành ai.
  • Với ti=3, nếu nhiệt độ hồ nhiệt nhỏ hơn ai thì bạn không làm gì cả, ngược lại thì thay đổi nhiệt độ hồ nhiệt thành ai.

Vì là đơn hàng rất lớn nên Tiến không thể để xảy ra bất kỳ sai sót nào. Tiến đã đặt ra Q (Q105) tình huống giả định, hỏi rằng nếu nhiệt độ ban đầu của hồ nhiệt là xi (|xi|109) thì sau N bước chuẩn hóa, nhiệt độ cuối cùng của hồ nhiệt sẽ là bao nhiêu?

Bạn hãy giúp Tiến thực hiện nhiệm vụ quan trọng này.

Input

  • Dòng đầu tiên chứa số nguyên dương N là số bước trong quy trình chuẩn hóa.
  • N dòng tiếp theo, dòng thứ i chứa cặp số nguyên ai,ti.
  • Dòng tiếp theo chứa số nguyên dương Q là số tình huống giả định mà bạn cần phải trả lời.
  • Dòng tiếp theo chứa dãy số X=(x1,x2,x3,,xQ) độ dài Q lần lượt là nhiệt độ ban đầu của hồ nhiệt trong các tình huống giả định.

Output

Bạn cần ghi ra Q dòng.

  • Dòng thứ i chứa nhiệt độ của hồ nhiệt sau khi thực hiện xong N bước nếu nhiệt độ ban đầu là xi.

Subtask

  • Subtask 1 (10% số điểm): Q=1.
  • Subtask 2 (10% số điểm): N,Q5000.
  • Subtask 3 (30% số điểm): ti1.
  • Subtask 4 (50% số điểm): không có giới hạn gì thêm.

Sample Input

Copy
3
-10 2
10 1
10 3
5
-15 -10 -5 0 5

Sample Output

Copy
0
0
5
10
10

Note

Ở tình huống giả định đầu tiên, nhiệt độ ban đầu là 15 đơn vị nhiệt độ. Quy trình chuẩn hóa sẽ diễn ra như sau:

  • Ở bước đầu tiên, t1=2a1=10, vì 15<10 nên nhiệt độ của hồ nhiệt trở thành 10.
  • Ở bước thứ hai, t2=1a2=10, nhiệt độ của hồ nhiệt sẽ được tăng 10 đơn vị nhiệt độ và hồ nhiệt độ sẽ có nhiệt độ là 0.
  • Ở bước cuối cùng, t3=3a3=10, vì 0<10 nên nhiệt độ của hồ nhiệt vẫn giữ nguyên là 0.

Sau khi hoàn thành quy trình chuẩn hóa thì nhiệt độ của hồ nhiệt là 0.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    vandung666 
    đã bình luận 2:38:10 ch, 15/02/2025

    include <iostream>

    include <algorithm>

    using namespace std;

    typedef long long ll; const ll NEGINF = -1000000000000000000LL; const ll POSINF = 1000000000000000000LL;

    int main(){ ios::syncwithstdio(false); cin.tie(nullptr);

    Copy
    int N;
    cin >> N;
    
    ll add = 0;
    ll lo = NEG_INF, hi = POS_INF;
    
    for (int i = 0; i < N; i++){
        ll a;
        int t;
        cin >> a >> t;
        if(t == 1){
            add += a;
            lo += a;
            hi += a;
        } else if(t == 2){
            if(hi < a){
                add = 0;
                lo = a;
                hi = a;
            } else {
                lo = max(lo, a);
            }
        } else {
            if(lo > a){
                add = 0;
                lo = a;
                hi = a;
            } else {
                hi = min(hi, a);
            }
        }
    }
    
    int Q;
    cin >> Q;
    while(Q--){
        ll x;
        cin >> x;
        ll res = x + add;
        if(res < lo) res = lo;
        if(res > hi) res = hi;
        cout << res << "\n";
    }
    
    return 0;
    

    } đây là code ý tưởng của mik,cho mọi người tham khảo đừng copy hết