Cod sursa(job #3232751)

Utilizator iulia_morariuIulia Morariu iulia_morariu Data 1 iunie 2024 11:11:56
Problema Stergeri Scor 100
Compilator cpp-64 Status done
Runda Simulare E4 #1 Marime 1.75 kb
#include <iostream>
#include <fstream>
#include <vector>
//#include <bits/stdc++.h>
#define ll long long

using namespace std;

ifstream fin("stergeri.in");
ofstream fout("stergeri.out");

int st[4 * 10000001];
int lz[2 * 10000001];

void lazy(int l, int r, int p){
    st[p] = max(0, st[p] + lz[p] * (r - l + 1));
    if(l != r){
        lz[p * 2] += lz[p];
        lz[p * 2 + 1] += lz[p];
    }
    lz[p] = 0;
}

void build(int l, int r, int p){
    if(l == r){
        st[p] = 1;
        return;
    }

    int m = (l + r) / 2;
    build(l, m, p * 2);
    build(m + 1, r, p * 2 + 1);

    st[p] = st[p * 2 + 1] + st[p * 2];
}

int query(int l, int r, int p, int l1, int r1){
    if(l1 > r1) return 0;
    lazy(l, r, p);
    if(l == l1 && r == r1){
        return st[p];
    }

    int m = (l + r) / 2;
    return query(l, m, p * 2, l1, min(m, r1)) + 
    query(m + 1, r, p * 2 + 1, max(l1, m + 1), r1);
}

void update(int l, int r, int p, int l1, int r1, int val){
    if(l1 > r1) return;
    //cout << "l = " << l << " r = " << r << " l1 = " << l1 << " r1 = " << r1 << '\n';
    if(l1 == l && r1 == r){
        lz[p] += val;
        lazy(l, r, p);
        return;
    }

    int m = (l + r) / 2;
    update(l, m, p * 2, l1, min(r1, m), val);
    update(m + 1, r, p * 2 + 1, max(l1, m + 1), r1, val);
    st[p] = st[p * 2] + st[p * 2 + 1];

    //cout << "l = " << l << " r = " << r << " st[p] = " << st[p] << '\n';
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    ll n, qq, k; fin >> n >> qq >> k;
    pair<ll, ll> v[qq];
    for(int i = 0; i < qq; i++){
        fin >> v[i].first >> v[i].second;
    }

    for(int i = qq - 1; i >= 0; i--){
        if(k >= v[i].first) k += (v[i].second - v[i].first + 1);
    }
    fout << k << '\n';

    return 0;
}