Submission #1007943

#TimeUsernameProblemLanguageResultExecution timeMemory
1007943andecaandeciLasers (NOI19_lasers)C++17
100 / 100
133 ms20308 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define pp pop_back
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define pll pair<ll,ll> 
#define pii pair<int,int> 
#define vl vector<ll> 
#define nikah ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
const ll maxn = 5e5+7, modn1 = 1e9+7, modn2 = 998244353;
using namespace std;

// kalo kamu ngga emas nanti nadya merasa bersalah, ayo san demi nadya!!!
// Kalo emang soalnya susah, pindah soal dulu 
// Jangan sampe diem, pikirin sesuatu, pasti bisa!!!
// Cobain semua approach, jangan ngestuck di satu pemikiran
// Jangan overthinking, jangan panik, tenangin pikiranmu


ll t,n,q;
ll a[maxn], pref[maxn];
set<pll>s;

void solve () {
  cin>>n>>q;
  while (q--) {
    ll k; cin>>k;
    for (ll i=1; i<=k; i++) {
      cin>>a[i];
      pref[i] = a[i] + pref[i-1];
    }
    ll cnt = 0;
    for (ll i=k; i>=1; i--) {
      ll x = min(pref[i], n);
      ll y = max(n - cnt - a[i] + 1, (ll)1);
      if (x >= y) {
        s.insert({y,x});
      }
      cnt += a[i];
    }
  }
  ll ans = 0, x = 0, y = 0, prey = 0;
  for (auto p : s) {
    x = p.fi; y = p.se;
    if (y <= prey) continue;
    if (prey == 0) {
      ans += (y-x+1);
    } else{
      ans += (y - max(prey+1, x) + 1);
    }
    prey = y;
  }
  cout<<ans<<endl;
}           


int main () {
  nikah
  t = 1;
//  cin>>t;
  while (t--) {
    solve();
  //  cout<<endl;
  }
}
#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...