Submission #989362

#TimeUsernameProblemLanguageResultExecution timeMemory
989362muhammadFeast (NOI19_feast)C++17
0 / 100
45 ms8392 KiB
#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++ ; if (n2 == 0 ) { repl = arn[i]; }else { repl += arn[i]; } 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 (stderr)

feast.cpp: In function 'int main()':
feast.cpp:97:17: warning: unused variable 'wdif' [-Wunused-variable]
   97 |             int wdif = dif - ne  ;
      |                 ^~~~
feast.cpp:16:7: warning: variable 'ze' set but not used [-Wunused-but-set-variable]
   16 |   int ze ;
      |       ^~
feast.cpp:18:7: warning: unused variable 'p1' [-Wunused-variable]
   18 |   int p1 = 0 , n2 =1 , nesum = 0 , repl = 0  ;
      |       ^~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...