Submission #1007935

#TimeUsernameProblemLanguageResultExecution timeMemory
1007935kebineLasers (NOI19_lasers)C++17
100 / 100
98 ms49600 KiB
#include <bits/stdc++.h> using namespace std; #define pii pair<ll,ll> #define REP(i,x,y) for(ll i=x;i<=y;i++) #define freeopen freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #define mod 998244353 #define pb push_back #define mk make_pair #define ll long long #define foor(x,vec) for(auto x:vec ){cout<<x<<" ";} #define fi first #define se second #define MAXN 700069 #define lld long double #define cha ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define ffl fflush(stdout) #define sst string #define pii pair<ll,ll> ll mvx[]={0,0,-1,1}; ll mvy[]={1,-1,0,0}; ll n,q; ll k[MAXN]; vector<ll> b[MAXN]; ll ps[MAXN],sf[MAXN]; void solve(){ cin>>n>>q; REP(i,0,q-1){ cin>>k[i]; REP(j,0,k[i]-1){ ll x; cin>>x; b[i].pb(x); } } ll ans=0; vector <pair<ll,ll>> vec; REP(i,0,q-1){ REP(j,0,k[i]){ ps[j]=0; sf[j]=0; } for(ll j=0;j<k[i];j++){ ps[j]=ps[j-1]+b[i][j]; } for(ll j=k[i]-1;j>=0;j--){ sf[j]=sf[j+1]+b[i][j]; } REP(j,0,k[i]-1){ ll r=n-sf[j+1]; ll l=ps[j-1]; l=max(l,(ll)0); r=min(r,(n)); if(j-1<0)l=0; ll len=r-l+1; if(len-2*(len-b[i][j])>=0){ ll nl=r-b[i][j]+1; ll nr=l+b[i][j]; nl=max(nl,(ll)1); nr=min(nr,(n)); if(nl<=nr) vec.pb({nl,nr}); } } } if(vec.size()) sort(vec.begin(),vec.end()); ll i=0; while(i<vec.size()){ ll ln=vec[i].fi; ll rn=vec[i].se; ll idx=i+1; while(idx<vec.size()){ if(vec[idx].fi<=rn){ rn=max(rn,vec[idx].se); idx++; } else{ break; } } ans+=max((rn-ln+1),(ll)0); i=idx; } ans=min(ans,n); cout<<ans<<endl; } int main(){ cha ll tc=1; // cin>>tc; while(tc--){ solve(); } }

Compilation message (stderr)

lasers.cpp: In function 'void solve()':
lasers.cpp:69:12: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     while(i<vec.size()){
      |           ~^~~~~~~~~~~
lasers.cpp:73:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |         while(idx<vec.size()){
      |               ~~~^~~~~~~~~~~
#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...