제출 #332453

#제출 시각아이디문제언어결과실행 시간메모리
332453dolphingarlicBigger segments (IZhO19_segments)C++14
100 / 100
91 ms12140 KiB
#include <stdio.h>

long long pref[500001], dp_cost[500001];
int dp_cnt[500001], lptr = 0, rptr = 0, dq[500001];

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) {
        scanf("%d", pref + i);
        pref[i] += pref[i - 1];
        while (rptr - lptr && pref[i] - pref[dq[lptr + 1]] >= dp_cost[dq[lptr + 1]])
            ++lptr;
        dp_cnt[i] = dp_cnt[dq[lptr]] + 1;
        dp_cost[i] = pref[i] - pref[dq[lptr]];
        while (dp_cost[dq[rptr]] - dp_cost[i] >= pref[i] - pref[dq[rptr]])
            --rptr;
        dq[++rptr] = i;
    }
    printf("%d", dp_cnt[n]);
    return 0;
}

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

segments.cpp: In function 'int main()':
segments.cpp:10:17: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
   10 |         scanf("%d", pref + i);
      |                ~^   ~~~~~~~~
      |                 |        |
      |                 int*     long long int*
      |                %lld
segments.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    8 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
segments.cpp:10:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   10 |         scanf("%d", pref + 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...