제출 #344525

#제출 시각아이디문제언어결과실행 시간메모리
344525NurlykhanBigger segments (IZhO19_segments)C++17
13 / 100
949 ms620 KiB
#include <bits/stdc++.h>

#define ll long long

using namespace std;

const int N = (int)5e5 + 10;
const int mod = (int)1e9 + 7;

int n;
int a[N];
ll pref[N];

ll get_sum(int l, int r) {
    return pref[r] - pref[l - 1];
}

int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
        pref[i] = pref[i - 1] + a[i];
    }
    int ans = 0;
    for (int mask = 0; mask < (1 << (n - 1)); mask++) {
        vector<int> pos;
        pos.push_back(0);
        for (int i = 0; i < n - 1; i++) {
            if ((mask >> i) % 2) {
                pos.push_back(i + 1);
            }
        }
        pos.push_back(n);

        bool bad = 0;
        for (int i = 0; i + 2 < pos.size(); i++) {
            if (get_sum(pos[i], pos[i + 1] - 1) > get_sum(pos[i + 1], pos[i + 2] - 1))
                bad = 1;
        }
        if (!bad)
            ans = max(ans, (int)pos.size() - 1);
    }
    printf("%d", ans);
    return 0;
    for (int i = 1; i <= n; i++) {
        ll cur_sum = 0;
        ll prev_sum = get_sum(1, i);
        int cnt = 0, j = i + 1;
        while (j <= n) {
            cur_sum += a[j];
            if (cur_sum >= prev_sum) {
                prev_sum = cur_sum;
                cur_sum = 0;
                cnt++;
            }
            j++;
        }
        ans = max(ans, cnt + 1);
    }
    printf("%d", ans);
    return 0;
}

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

segments.cpp: In function 'int main()':
segments.cpp:36:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for (int i = 0; i + 2 < pos.size(); i++) {
      |                         ~~~~~~^~~~~~~~~~~~
segments.cpp:19:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   19 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
segments.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   21 |         scanf("%d", &a[i]);
      |         ~~~~~^~~~~~~~~~~~~
#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...