답안 #928626

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
928626 2024-02-16T20:30:02 Z Mher777 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
175 ms 98220 KB
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <array>
#include <string>
#include <algorithm>
#include <cmath>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <bitset>
#include <list>
#include <iterator>
#include <numeric>
#include <complex>
#include <utility>
#include <random>
#include <fstream>
using namespace std;
mt19937 rnd(6969);

/* -------------------- Typedefs -------------------- */

typedef int itn;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef float fl;
typedef long double ld;

/* -------------------- Usings -------------------- */

using vi = vector<int>;
using vll = vector<ll>;
using mii = map<int, int>;
using mll = map<ll, ll>;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

/* -------------------- Defines -------------------- */

#define ff first
#define ss second
#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
#define mpr make_pair
#define yes cout<<"Yes\n"
#define no cout<<"No\n"
#define all(x) (x).begin(), (x).end()

/* -------------------- Constants -------------------- */

const int MAX = int(2e9 + 5);
const ll MAXL = ll(1e18) + 5ll;
const ll MOD = ll(1000000007);
const ll MOD2 = ll(998244353);

/* -------------------- Functions -------------------- */

void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
}

void precision(int x) {
    cout.setf(ios::fixed | ios::showpoint);
    cout.precision(x);
}

ll gcd(ll a, ll b) {
    if (a == 0 || b == 0) return(max(a, b));
    while (b) {
        a %= b;
        swap(a, b);
    }
    return a;
}

ll lcm(ll a, ll b) {
    return a / gcd(a, b) * b;
}

ll range_sum(ll a, ll b) {
    ll dif = a - 1, cnt = b - a + 1;
    ll ans = ((b - a + 1) * (b - a + 2)) / 2;
    ans += ((b - a + 1) * dif);
    return ans;
}

string dec_to_bin(ll a) {
    string s = "";
    for (ll i = a; i > 0; ) {
        ll k = i % 2;
        i /= 2;
        char c = k + 48;
        s += c;
    }
    if (a == 0) {
        s = "0";
    }
    reverse(all(s));
    return s;
}

ll bin_to_dec(string s) {
    ll num = 0;
    for (int i = 0; i < s.size(); i++) {
        num *= 2ll;
        num += (s[i] - '0');
    }
    return num;
}

ll factorial_by_mod(ll n, ll mod) {
    ll ans = 1;
    ll num;
    for (ll i = 1; i <= n; ++i) {
        num = i % mod;
        ans *= num;
        ans %= mod;
    }
    return ans;
}

int isPrime(ll a) {
    if (a == 1) return 0;
    for (ll i = 2; i * i <= a; i++) {
        if (a % i == 0) return 0;
    }
    return 1;
}

ll binpow(ll a, ll b) {
    if (!a) return 0;
    ll ans = 1;
    while (b) {
        if (b & 1) {
            ans *= a;
        }
        b >>= 1;
        a *= a;
    }
    return ans;
}

ll binpow_by_mod(ll a, ll b, ll mod) {
    if (!a) return 0;
    ll ans = 1;
    while (b) {
        if (b & 1) {
            ans *= a;
            ans %= mod;
        }
        b >>= 1;
        a *= a;
        a %= mod;
    }
    return ans;
}

/* -------------------- Solution -------------------- */

const int N = 4000005;
int t[N], l1[N], r1[N], sz = 1, n = 1000000000;

void add(int pos) {
    if (!l1[pos]) l1[pos] = ++sz;
    if (!r1[pos]) r1[pos] = ++sz;
}

void push(int l, int r, int mid, int pos) {
    if (t[pos] != (r - l + 1)) return;
    t[l1[pos]] = mid - l + 1;
    t[r1[pos]] = r - mid;
}

void upd(int l, int r, int tl = 1, int tr = n, int pos = 1) {
    if (l == tl && r == tr) {
        t[pos] = (r - l + 1);
        return;
    }
    int mid = (tl + tr) / 2;
    add(pos);
    push(tl, tr, mid, pos);
    if (mid >= r) {
        upd(l, r, tl, mid, l1[pos]);
    }
    else if (mid < l) {
        upd(l, r, mid + 1, tr, r1[pos]);
    }
    else {
        upd(l, mid, tl, mid, l1[pos]);
        upd(mid + 1, r, mid + 1, tr, r1[pos]);
    }
    t[pos] = t[l1[pos]] + t[r1[pos]];
}

int qry(int l, int r, int tl = 1, int tr = n, int pos = 1) {
    if (l == tl && r == tr) {
        return t[pos];
    }
    int mid = (tl + tr) / 2;
    add(pos);
    push(tl, tr, mid, pos);
    if (mid >= r) {
        return qry(l, r, tl, mid, l1[pos]);
    }
    if (mid < l) {
        return qry(l, r, mid + 1, tr, r1[pos]);
    }
    return qry(l, mid, tl, mid, l1[pos]) + qry(mid + 1, r, mid + 1, tr, r1[pos]);
}

void slv() {
    int q;
    cin >> q;
    int c = 0;
    while (q--) {
        int type, l, r;
        cin >> type >> l >> r;
        l += c, r += c;
        if (type == 1) {
            c = qry(l, r);
            cout << c << '\n';
        }
        else {
            upd(l, r);
        }
    }
}

void cs() {
    int tstc = 1;
    //cin >> tstc;
    while (tstc--) {
        slv();
    }
}

void precalc() {
    return;
}

int main() {
    fastio();
    precalc();
    //precision(0);
    cs();
    return 0;
}

Compilation message

apple.cpp: In function 'll range_sum(ll, ll)':
apple.cpp:92:21: warning: unused variable 'cnt' [-Wunused-variable]
   92 |     ll dif = a - 1, cnt = b - a + 1;
      |                     ^~~
apple.cpp: In function 'll bin_to_dec(std::string)':
apple.cpp:115:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  115 |     for (int i = 0; i < s.size(); i++) {
      |                     ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 6 ms 1608 KB Output is correct
5 Correct 8 ms 1884 KB Output is correct
6 Correct 8 ms 1764 KB Output is correct
7 Correct 8 ms 1884 KB Output is correct
8 Correct 44 ms 12376 KB Output is correct
9 Correct 97 ms 22888 KB Output is correct
10 Correct 108 ms 24188 KB Output is correct
11 Correct 103 ms 25128 KB Output is correct
12 Correct 102 ms 25632 KB Output is correct
13 Correct 104 ms 30548 KB Output is correct
14 Correct 103 ms 30804 KB Output is correct
15 Runtime error 175 ms 98220 KB Execution killed with signal 11
16 Halted 0 ms 0 KB -