This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#pragma optimize ("g",on)
#pragma GCC optimize("O3")
#pragma GCC target ("avx2")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("unroll-loops")
#define all(v) v.begin(),v.end()
#define sz(a) a.size()
#define nl "\n"
#define IOI return 0;
#define pb push_back
#define ppb pop_back()
#define ll long long
#define ull unsigned long long
#define ld long double
#define IOS ios_base :: sync_with_stdio(NULL); cin.tie(0); cout.tie(0);
#define pii pair<int,int>
#define X first
#define Y second
using namespace std;
const int N = (int)1e5 + 7;
const ll MOD = (ll)1e9 + 7;
const ll INF = (ll)1e18 + 7;
const int inf = (int)1e9 + 7;
pii dx[] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
ll a[N],p[N];
void solve() {
int n,mx = 0;
cin>>n;
p[-1]=0;
for(int i=0; i<n; ++i) {
cin>>a[i];
p[i]=p[i-1]+a[i];
}
for(int mask = 0; mask < (1<<n); ++mask) {
vector<int> cur;
bool ok = 1;
for(int i=0; i<n; ++i) {
int x = (1<<i);
if((mask & x)==x) {
cur.pb(i);
}
}
cur.pb(n-1);
vector<int> sum;
sum.pb(p[cur[0]]);
for(int i=1; i<sz(cur); ++i) {
sum.pb(p[cur[i]] - p[cur[i-1]]);
}
/*
for(auto x : cur) cout<<x<<' ';
cout<<nl;
for(auto x : sum) cout<<x<<' ';
cout<<nl;
cout<<nl;
*/
for(int i=1; i<sz(sum); ++i) {
if(sum[i]<sum[i-1]) {
ok = 0;
break;
}
}
if(ok) {
mx = max(mx, (int)sz(sum));
}
}
cout<<mx<<nl;
}
int main() {
IOS
int tt = 1;
//cin>>tt;
while(tt--) {
solve();
}
IOI
}
// mansur l0x
Compilation message (stderr)
segments.cpp:3: warning: ignoring #pragma optimize [-Wunknown-pragmas]
3 | #pragma optimize ("g",on)
|
segments.cpp: In function 'void solve()':
segments.cpp:56:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
56 | for(int i=1; i<sz(cur); ++i) {
| ^
segments.cpp:66:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
66 | for(int i=1; i<sz(sum); ++i) {
| ^
segments.cpp:39:9: warning: array subscript -1 is below array bounds of 'long long int [100007]' [-Warray-bounds]
39 | p[-1]=0;
| ~~~~^
segments.cpp:32:9: note: while referencing 'p'
32 | ll a[N],p[N];
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |