제출 #537881

#제출 시각아이디문제언어결과실행 시간메모리
537881vladislav11Sum Zero (RMI20_sumzero)C++14
61 / 100
330 ms23404 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int n; vector<ll> a; vector<int> nxt; int main () { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; a.assign( n+1, 0 ); for ( int i=1; i<=n; i++ ) cin >> a[i]; for ( int i=1; i<=n; i++ ) a[i] += a[i-1]; map<ll,int> pre; nxt.assign( n+2, n+1 ); for ( int i=0; i<=n; i++ ) { if ( pre.count( a[i] ) ) nxt[ pre[a[i]]+1 ] = i; pre[ a[i] ] = i; } for ( int i=n; i>=0; i-- ) nxt[i] = min( nxt[i], nxt[i+1] ); /*for ( auto& el : nxt ) cout << el << ' '; cout << '\n';*/ int q; cin >> q; vector<array<int,3>> qer(q); for ( auto& ar : qer ) { cin >> ar[0] >> ar[1]; ar[2] = 0; } for ( int p=20; p>=0; p-- ) { vector<int> jmp( nxt.begin(), nxt.end() ); /*cout << p << ":\n"; for ( auto& el : jmp ) cout << el << ' '; cout << '\n';*/ for ( int i=0; i<p; i++ ) { for ( int j=0; j<jmp.size(); j++ ) jmp[j] = jmp[ min( n+1, jmp[j]+1 ) ]; } /*for ( auto& el : jmp ) cout << el << ' '; cout << '\n';*/ for ( auto& ar : qer ) { if ( jmp[ ar[0] ] <= ar[1] ) { ar[2] += 1 << p; ar[0] = jmp[ ar[0] ] + 1; } } } for ( auto& ar : qer ) cout << ar[2] << '\n'; return 0; }

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

sumzero.cpp: In function 'int main()':
sumzero.cpp:67:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |             for ( int j=0; j<jmp.size(); j++ )
      |                            ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...