Odpowiedź:
#include <iostream>
#include <vector>
#include <numeric>
int main() {
int n, a;
std::cin >> n;
std::vector<int> nuts(n);
for (int i = 0; i < n; i++) {
std::cin >> a;
nuts[i] = a;
}
int chipCounter = 0;
int daleCounter = 0;
int sum = std::accumulate(nuts.begin(), nuts.end(), 0);
int chipSum, daleSum;
if (sum % 2 == 0) {
chipSum = sum / 2;
daleSum = sum / 2;
} else {
chipSum = sum / 2 + 1;
daleSum = sum - chipSum;
int chipCurrent = 0;
int daleCurrent = 0;
for (int i = 0; i < nuts.size(); i++) {
if (chipCurrent < chipSum) {
chipCurrent += nuts[i];
chipCounter++;
if (daleCurrent + nuts[i] <= daleSum) {
daleCurrent += nuts[nuts.size() - 1 - i];
daleCounter++;
std::cout << chipCounter << std::endl;
std::cout << daleCounter << std::endl;
return 0;
Wyjaśnienie:
Nie jestem pewny, czy dla każdego przykładu będzie działać, ale dla tych przykładowych działa
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Odpowiedź:
#include <iostream>
#include <vector>
#include <numeric>
int main() {
int n, a;
std::cin >> n;
std::vector<int> nuts(n);
for (int i = 0; i < n; i++) {
std::cin >> a;
nuts[i] = a;
}
int chipCounter = 0;
int daleCounter = 0;
int sum = std::accumulate(nuts.begin(), nuts.end(), 0);
int chipSum, daleSum;
if (sum % 2 == 0) {
chipSum = sum / 2;
daleSum = sum / 2;
} else {
chipSum = sum / 2 + 1;
daleSum = sum - chipSum;
}
int chipCurrent = 0;
int daleCurrent = 0;
for (int i = 0; i < nuts.size(); i++) {
if (chipCurrent < chipSum) {
chipCurrent += nuts[i];
chipCounter++;
}
if (daleCurrent + nuts[i] <= daleSum) {
daleCurrent += nuts[nuts.size() - 1 - i];
daleCounter++;
}
}
std::cout << chipCounter << std::endl;
std::cout << daleCounter << std::endl;
return 0;
}
Wyjaśnienie:
Nie jestem pewny, czy dla każdego przykładu będzie działać, ale dla tych przykładowych działa