답안 #1087383

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1087383 2024-09-12T15:10:57 Z steveonalex Worst Reporter 3 (JOI18_worst_reporter3) C++17
100 / 100
219 ms 29408 KB
#include <bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
typedef unsigned long long ull;
 
#define MASK(i) (1LL << (i))
#define GETBIT(mask, i) (((mask) >> (i)) & 1)
#define ALL(v) (v).begin(), (v).end()
#define block_of_code if(true)
 
ll max(ll a, ll b){return (a > b) ? a : b;}
ll min(ll a, ll b){return (a < b) ? a : b;}
ll gcd(ll a, ll b){return __gcd(a, b);}
ll lcm(ll a, ll b){return a / gcd(a, b) * b;}
 
ll LASTBIT(ll mask){return (mask) & (-mask);}
int pop_cnt(ll mask){return __builtin_popcountll(mask);}
int ctz(ull mask){return __builtin_ctzll(mask);}
int logOf(ull mask){return 63 - __builtin_clzll(mask);}
 
mt19937_64 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
ll rngesus(ll l, ll r){return l + (ull) rng() % (r - l + 1);}
double rngesus_d(double l, double r){
    double cur = rngesus(0, MASK(60) - 1);
    cur /= MASK(60) - 1;
    return l + cur * (r - l);
}
 
template <class T1, class T2>
    bool maximize(T1 &a, T2 b){
        if (a < b) {a = b; return true;}
        return false;
    }
 
template <class T1, class T2>
    bool minimize(T1 &a, T2 b){
        if (a > b) {a = b; return true;}
        return false;
    }
 
template <class T>
    void printArr(T container, string separator = " ", string finish = "\n", ostream &out = cout){
        for(auto item: container) out << item << separator;
        out << finish;
    }
 
template <class T>
    void remove_dup(vector<T> &a){
        sort(ALL(a));
        a.resize(unique(ALL(a)) - a.begin());
    }

int count_intersection(pair<int, int> a, pair<int, int> b){
    pair<int, int> c = {max(a.first, b.first), min(a.second, b.second)};
    return max(0, c.second - c.first + 1);
}

int main(void){
    ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
    clock_t start = clock();

    int n, q; cin >> n >> q;
    vector<ll> d(n+1);
    for(int i = 1; i<=n; ++i) cin >> d[i];

    vector<ll> jmp_sz(n+1);
    jmp_sz[0] = 1;
    for(int i = 1; i<=n; ++i){
        ll cur = d[i] - d[i] % jmp_sz[i-1];
        if (cur < d[i]) cur += jmp_sz[i-1];
        jmp_sz[i] = cur;
    }

    map<int, pair<int, int>> mp;
    for(int i = 0; i<=n; ++i){
        if (!mp.count(jmp_sz[i])) mp[jmp_sz[i]] = {-i, -i};
        else{
            mp[jmp_sz[i]].first = -i;
        }
    }

    while(q--){
        ll t, l, r; cin >> t >> l >> r;
        int ans = 0;
        for(auto i: mp){
            int step = i.first;
            pair<int, int> range = i.second;

            int cu = t - t % step;
            range.first += cu; range.second += cu;

            ans += count_intersection(range, {l, r});
        }
        cout << ans << "\n";
    }


    
 
    cerr << "Time elapsed: " << clock() - start << " ms\n";
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 150 ms 26704 KB Output is correct
2 Correct 161 ms 26592 KB Output is correct
3 Correct 156 ms 26716 KB Output is correct
4 Correct 170 ms 26656 KB Output is correct
5 Correct 159 ms 26708 KB Output is correct
6 Correct 165 ms 26708 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 344 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 150 ms 26704 KB Output is correct
2 Correct 161 ms 26592 KB Output is correct
3 Correct 156 ms 26716 KB Output is correct
4 Correct 170 ms 26656 KB Output is correct
5 Correct 159 ms 26708 KB Output is correct
6 Correct 165 ms 26708 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 161 ms 25144 KB Output is correct
14 Correct 155 ms 25684 KB Output is correct
15 Correct 159 ms 24296 KB Output is correct
16 Correct 158 ms 24916 KB Output is correct
17 Correct 212 ms 29188 KB Output is correct
18 Correct 219 ms 29264 KB Output is correct
19 Correct 211 ms 29268 KB Output is correct
20 Correct 201 ms 29268 KB Output is correct
21 Correct 206 ms 29408 KB Output is correct
22 Correct 202 ms 29200 KB Output is correct
23 Correct 196 ms 29268 KB Output is correct
24 Correct 207 ms 29268 KB Output is correct
25 Correct 159 ms 26636 KB Output is correct
26 Correct 154 ms 26584 KB Output is correct
27 Correct 204 ms 28752 KB Output is correct
28 Correct 216 ms 29268 KB Output is correct
29 Correct 206 ms 28536 KB Output is correct
30 Correct 218 ms 28684 KB Output is correct
31 Correct 208 ms 29008 KB Output is correct
32 Correct 148 ms 25168 KB Output is correct
33 Correct 0 ms 344 KB Output is correct