Submission #369374

#TimeUsernameProblemLanguageResultExecution timeMemory
369374pragmatistBigger segments (IZhO19_segments)C++14
13 / 100
1583 ms512 KiB
#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 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...