Submission #815945

#TimeUsernameProblemLanguageResultExecution timeMemory
815945makanhuliaLasers (NOI19_lasers)C++17
21 / 100
45 ms11104 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int presum[500005], start[500005], close[500005]; signed main() { int l, r, x, w; cin >> l >> r; for (int i = 1; i <= r; i++) { cin >> x; for (int j = 1; j <= x; j++) { cin >> w; presum[j] = presum[j-1] + w; } int gap = l - presum[x]; for (int j = 1; j <= x; j++) { if (presum[j-1] + gap + 1 <= presum[j]) { start[presum[j-1] + gap + 1]++; close[presum[j]]++; } } } // Line Sweep int count = 0, save, ans = 0; for (int i = 1; i <= l; i++) { // cout << i << " " << start[i] << " " << close[i] << endl; if (start[i] == 0 and close[i] == 0) continue; if (count == 0) save = i; count += start[i]; count -= close[i]; if (count == 0) { ans += (i-save)+1; } } cout << ans << 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...