Submission #1007591

#TimeUsernameProblemLanguageResultExecution timeMemory
1007591andecaandeciLasers (NOI19_lasers)C++17
100 / 100
83 ms30748 KiB
#include <bits/stdc++.h> using namespace std; #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") typedef long long ll; const ll INF = 1e9; const ll MOD = 998244353; const ll MAXN = 5e5 + 5; const ll LOG = 31; #define vll vector <ll> #define pll pair <ll, ll> #define fi first #define se second #define endl '\n' ll n, m; ll b [MAXN], pf [MAXN], sf [MAXN]; vector <pll> kos, u, v; vll ans; void solve(){ cin >> n >> m; for(ll i = 1; i <= m; i++){ ll z; cin >> z; for(ll j = 1; j <= z; j++) cin >> b[j]; pf[0] = 0, sf[z+1] = 0; for(ll j = 1; j <= z; j++) pf[j] = pf[j-1] + b[j]; for(ll j = z; j >= 1; j--) sf[j] = sf[j+1] + b[j]; kos.clear(); for(ll j = 1; j <= z; j++){ ll l = pf[j-1]+1, r = n - sf[j+1]; if(l+b[j]-1 >= r-b[j]+1){ kos.push_back({r-b[j], l}); kos.push_back({r, l+b[j]}); } else kos.push_back({r, l}); } sort(kos.begin(), kos.end()); u.clear(); ll ans = 0; u.push_back({0, 0}); for(auto x : kos){ // cout << x.se << " << " << x.fi << endl; ll l = x.se, r = x.fi; while(!u.empty()){ if(u.back().se < l) break; l = min(l, u.back().fi); u.pop_back(); } u.push_back({l, r}); } u.push_back({n+1, n+1}); for(ll j = 1; j < u.size(); j++){ ll l = u[j-1].se+1, r = u[j].fi-1; if(l <= r) v.push_back({r, l}); } } sort(v.begin(), v.end()); // for(auto x : v){ // cout << x.se << " << " << x.fi << endl; // } u.clear(); for(auto x : v){ ll l = x.se, r = x.fi; while(!u.empty()){ if(u.back().se < l) break; l = min(l, u.back().fi); u.pop_back(); } u.push_back({l, r}); } ll ans = 0; for(auto x : u){ ans += x.se - x.fi + 1; } cout << ans << endl; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // ll t; cin >> t; // while(t--){ solve(); // } }

Compilation message (stderr)

lasers.cpp: In function 'void solve()':
lasers.cpp:55:25: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |         for(ll j = 1; j < u.size(); j++){
      |                       ~~^~~~~~~~~~
lasers.cpp:42:12: warning: unused variable 'ans' [-Wunused-variable]
   42 |         ll ans = 0;
      |            ^~~
#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...