Submission #815858

#TimeUsernameProblemLanguageResultExecution timeMemory
815858christinelynnLasers (NOI19_lasers)C++17
100 / 100
249 ms39252 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define ull unsigned long long #define pii pair<int, int> #define pll pair<ll, ll> #define fi first #define se second const int N = 5e5 + 5; int x[N], sum[N]; vector<int> a[N]; vector<pair<int, int>> v, ans1, ans2; int main() { //ios_base::sync_with_stdio(false); cin.tie(NULL); int l, r; cin >> l >> r; for (int i = 1; i <= r; i++) { cin >> x[i]; for (int j = 0; j < x[i]; j++) { int x2; cin >> x2; a[i].push_back(x2); sum[i] += x2; } } for (int i = 1; i <= r; i++) { v.clear(); if (sum[i] == l) { ans1.push_back({1, l}); break; } int sum1 = 0, sum2 = sum[i]; v.push_back({sum1 + 1, l - sum2}); for (int j = 0; j < x[i]; j++) { sum1 += a[i][j], sum2 -= a[i][j]; v.push_back({sum1 + 1, l - sum2}); } for (int j = 1; j < (int)v.size(); j++) { if (v[j].fi <= v[j - 1].se) continue; ans1.push_back({v[j - 1].se + 1, v[j].fi - 1}); } // cout << i << "flaw\n"; // for (auto j : v) cout << j.fi << " " << j.se << "fkwoa\n"; } sort(ans1.begin(), ans1.end()); // for (auto i : ans1) cout << i.fi << " " << i.se << "dkawop\n"; for (auto y : ans1) { if (ans2.empty()) ans2.push_back(y); else { if (y.fi <= ans2.back().se) ans2.back().se = max(ans2.back().se, y.se); else ans2.push_back(y); } } int ans = 0; for (auto y : ans2) ans += y.se - y.fi + 1; cout << ans << "\n"; }
#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...