답안 #989362

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
989362 2024-05-28T04:43:51 Z muhammad Feast (NOI19_feast) C++17
0 / 100
45 ms 8392 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++ ;
        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

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  ;
      |       ^~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 45 ms 8392 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 31 ms 6868 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 40 ms 7104 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 45 ms 8392 KB Output isn't correct
2 Halted 0 ms 0 KB -