45I - TCMCF+++ - CodeForces Solution


greedy *1400

Please click on ads to support us..

Python Code:

import sys
from heapq import heappop, heappush

input = lambda: sys.stdin.readline().rstrip()
I = lambda: int(input())
MI = lambda: map(int, input().split())
GMI = lambda: map(lambda x: int(x) - 1, input().split())
LI = lambda: list(MI())
LGMI = lambda: list(GMI())
YN = lambda x: print('YES' if x else 'NO')
mod = 1000000007
mod2 = 998244353

n = I()
nums = LI()
h = []
rst = []
zero = 0
for x in nums:
    if x > 0:
        rst.append(x)
    elif x < 0:
        heappush(h, x)
    else:
        zero += 1
while len(h) >= 2:
    rst.append(heappop(h))
    rst.append(heappop(h))

if rst:
    print(*rst)
else:
    if zero:
        print(0)
    else:
        print(max(h))

C++ Code:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <string>
using namespace std;

void solve() {
    int n;
    cin >> n;

    vector<int> pos, z, neg;

    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;

        if (x > 0)
            pos.push_back(x);
        else if (x == 0)
            z.push_back(x);
        else
            neg.push_back(x);
    }

    sort(neg.begin(), neg.end());

    vector<int> res = pos;
    if (neg.size() > 1) {
        for (int i = 0; i + 1 < neg.size(); i += 2) {
            res.push_back(neg[i]);
            res.push_back(neg[i + 1]);
        }
    }

    if (res.empty() && !z.empty())
        res.push_back(z[0]);

    if (res.empty() && !neg.empty())
        res.push_back(neg[0]);

    for (int x : res)
        cout << x << " ";
}

int main() {
    int n = 1;
    //cin >> n;

    for (int i = 0; i < n; i++)
        solve();
}


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST