답안 #848129

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
848129 2023-09-11T12:16:43 Z asd12343 Feast (NOI19_feast) C++14
0 / 100
2 ms 532 KB
#pragma GCC optimize("Os")
#include <bits/stdc++.h>
using namespace std;
const int MN = 2e6+5;
const int INF = 0x3f3f3f3f;
#define int long long
#define pb push_back
#define p make_pair	
#define fi first
#define se second
#define pii pair<int,int>
#define f(i,a,b) for (int i = a ; i < b ; i++)
#define f1(i,a,b) for (int i = a ; i > b ; i--)
#define f2(i,a,b) for (int i = a ; i <= b ; i++)
#define FILE(X)						\
	freopen(#X ".INP","r",stdin);	\
	freopen(#X ".OUT","w",stdout);

mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int random(int l, int r) { return l + rd() % (r - l + 1); }
int a[MN];
int n,k,pos;
int cnt = 0;
int dp[5003][5003];
signed main(){
 	ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    FILE(BLUESKY);
    bool flag = false;
    cin >> n >> k;
    for (int i = 1 ; i <= n ; i++) {
    	cin >> a[i];
    	if (a[i] < 0) flag = true,cnt++, pos = i;
    }	
    if (flag == false) cout << accumulate(a+1,a+n+1,0LL);
    else if (cnt == 1) {
    	if (k == 1) {
    		int sum = 0, sum2 = 0;
    		for (int i = 1 ; i < pos ; i++) sum += a[i];
    		for (int i = pos+1 ; i <= n ; i++) sum2 += a[i];
    		cout << max(sum,sum2) << "\n";
    	}
    	else {
    		cout << accumulate(a+1,a+n+1,0LL) - a[pos];
    	}
    }
    else if (cnt == n) cout << 0;
    else if (n <= 5000) {
    	for (int i = 0 ; i <= n ; i++) dp[i][1] = 0;
    	for (int i = 1 ; i <= n ; i++) {
    		for (int j = 0 ; j <= k ; j++) { 
    			dp[i][j+1] = max(dp[i][j+1],dp[i-1][j]);
    			dp[i][j] = max(dp[i][j],dp[i-1][j] + a[i]);
    		}
    	}
    	int ans = 0;
    	for (int i = 0 ; i <= k ; i++) ans = max(ans,dp[n][i]);
    	cout << ans <<"\n";
    }
    return 0;
}

Compilation message

feast.cpp: In function 'int main()':
feast.cpp:16:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |  freopen(#X ".INP","r",stdin); \
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
feast.cpp:28:5: note: in expansion of macro 'FILE'
   28 |     FILE(BLUESKY);
      |     ^~~~
feast.cpp:17:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |  freopen(#X ".OUT","w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
feast.cpp:28:5: note: in expansion of macro 'FILE'
   28 |     FILE(BLUESKY);
      |     ^~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 532 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -