Submission #815957

#TimeUsernameProblemLanguageResultExecution timeMemory
815957andecaandeciLasers (NOI19_lasers)C++17
100 / 100
274 ms16764 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

int presum[500005];
vector<pair<int, int>> segment;

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]) {
        segment.push_back({presum[j-1] + gap + 1, 1});
        segment.push_back({presum[j], 2});
      }
    }
  }

  // Line Sweep

  sort(segment.begin(), segment.end());
  int count = 0, save, ans = 0;

  for (auto i: segment) {
    if (i.second == 1) {
      if (count == 0) save = i.first;
      count++;
    } else {
      count--;
      if (count == 0) ans += (i.first-save+1);
    }
  }

  cout << ans << endl;
}

Compilation message (stderr)

lasers.cpp: In function 'int main()':
lasers.cpp:38:38: warning: 'save' may be used uninitialized in this function [-Wmaybe-uninitialized]
   38 |       if (count == 0) ans += (i.first-save+1);
      |                               ~~~~~~~^~~~~
#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...