# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
989364 | 2024-05-28T04:51:38 Z | muhammad | Feast (NOI19_feast) | C++ | 44 ms | 5588 KB |
#include <bits/stdc++.h> using namespace std ; int main() { ios::sync_with_stdio(false); cin.tie(0) ; // freopen("revegetate.in", "r", stdin); // freopen("revegetate.out", "w", stdout); int n , k ; cin >> n >> k ; int p=0 , ne=0 , z =0 ; int arn [n] ; vector <int> po ; vector <int> neg ; //int ze ; vector <int> negsum ; int p1 = 0 , n2 =1 , nesum = 0 , repl = 0 ; for (int i = 0 ; i < n ;i++ ) { cin >> arn[i] ; if (arn[i] > 0 ) { p++ ; int pos = arn[i] ; po.push_back(pos) ; }else if (arn[i] < 0 ) { ne++ ; int nega =arn[i] ; neg.push_back(nega) ; }else { z++ ; // ze = 0 ; } } int res = 0 ; for (int i = 1 ; i < n ; i++ ) { if (arn[i] > 0 && arn[i-1] >= 0 ) { negsum.push_back(0) ; }else if (arn[i] < 0 && arn[i-1] > 0 ){ nesum = arn[i] ; for (int j = i + 1 ; j < n ; j++ ) { if (arn[j] > 0 ) { negsum.push_back(nesum) ; i = j -1 ; break; }else { nesum += arn[j] ; } } } } if (n == k ) { if (p == n || z == 0 ) { for (int i = 0 ; i < n ; i++ ) { res += arn[i] ; } cout << res << endl; }else { if (z >= 1 ) { for (int i = 0 ; i < p ; i++ ) { res += po[i] ; } cout << res << endl; } } }else if (n > k ) { int dif = n - k ; if (ne == dif ) { for (int i = 0 ; i < p ; i++ ) { res += po[i] ; } }else if (ne > dif && z == 0 ) { for (int i = 1 ; i < ne && neg[i] > neg[i-1] ; i++ ) { swap (neg[i], neg[i-1]) ; for (int j = i - 1 ; j > 0 && neg[j] > neg[j-1] ; j-- ) { swap (neg[j],neg[j-1]) ; } } for (int i = 0 ; i < ne - dif ; i++ ) { res += neg[i] ; } for (int i = 0 ; i < p ; i++ ) { res += po[i] ; } cout << res << endl; }else if (z >= 1 && ne > dif ) { for (int i = 0 ; i < p ; i++ ) { res += po[i] ; } cout << res << endl; }else if (ne < dif ) { // int wdif = dif - ne ; sort (po.begin(), po.end()) ; sort (negsum.begin(), negsum.end()) ; int os = (int) negsum.size() ; for (int i = p-1 , j = 1 , o = (int) os - 1 ; i >=0 && o >= 0 ; i--, j++ ) { if (j <= k ) { res += po[i] ; // cout << " res" << " " << endl; }else { if (po[i] + negsum[o] > 0 ) { res += po[i] + negsum[o] ; }else { break; } o--; } } cout << res << endl; // cout << os << endl; } } return 0 ; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 44 ms | 5588 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 31 ms | 5584 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 38 ms | 4296 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 348 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 44 ms | 5588 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |