제출 #1007893

#제출 시각아이디문제언어결과실행 시간메모리
1007893makanhuliaLasers (NOI19_lasers)C++17
10 / 100
34 ms27572 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 500069 #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 vis[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]-1; ll l=ps[j-1]+1; if(j-1<0)l=1; 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]-2; if(nl<=nr) vec.pb({nl,nr}); } } } 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==ln){ rn=max(rn,vec[idx].se); idx++; } else{ break; } } i=idx; ans+=max((rn-ln+1),(ll)0); while(idx<vec.size() && vec[idx].fi<ln){ i++; } } cout<<ans<<endl; } int main(){ cha ll tc=1; // cin>>tc; while(tc--){ solve(); } }

컴파일 시 표준 에러 (stderr) 메시지

lasers.cpp: In function 'void solve()':
lasers.cpp:67: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]
   67 |     while(i<vec.size()){
      |           ~^~~~~~~~~~~
lasers.cpp:71: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]
   71 |         while(idx<vec.size()){
      |               ~~~^~~~~~~~~~~
lasers.cpp:82: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]
   82 |         while(idx<vec.size() && vec[idx].fi<ln){
      |               ~~~^~~~~~~~~~~
#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...