제출 #1319930

#제출 시각아이디문제언어결과실행 시간메모리
1319930vaishakhvLasers (NOI19_lasers)C++20
0 / 100
13 ms4520 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define eb emplace_back // faster than push_back xD

// pbds UwU
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define oset tree<ll, null_type,less<ll>, rb_tree_tag,tree_order_statistics_node_update> // use pair for ms

// my io library :D
#define m1(x) template<class T, class... U> void x(T&& a, U&&... b)
#define m2(x) (ll[]){(x forward<U>(b),0)...}

m1(pr){cout << forward<T>(a);  m2(cout << " " <<); cout << "\n";}
m1(re){cin >> forward<T>(a); m2(cin >>);}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    ll l, r;
    re(l, r);

    vector<vector<ll>> x(r);

    for (ll i{}; i < r; i++) {
        ll X; re(X);
        for (ll j{}; j < X; j++) {
            ll c; re(c);
            x[i].push_back(c);
        }
    }

    ll w1 = accumulate(x[0].begin(), x[0].end(), 0LL), w2 = accumulate(x[1].begin(), x[1].end(), 0LL);
    ll l1 = max(1LL, l - w1 + 1), r1 = min(l, w1);
    ll l2 = max(1LL, l- w2+ 1), r2 = min(l, w2), ans;

    if (r1 < l2 || r2 < l1) {
        ans = (r1 - l1 + 1) + (r2 - l2 + 1);
    } else {
        ll l = min(l1, l2);
        ll r = max(r1, r2);
        ans = r - l + 1;
    }

    pr(max(0LL,ans));
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...