Система команд исполнителя Вычислитель состоит из двух команд, которым присвоены номера:
1 — вычти 2
2 — умножь на 3
Первая из них уменьшает число на 2, вторая увеличивает число в 3 раза. При записи алгоритмов для краткости указываются лишь номера команд. Запишите алгоритм, содержащий не более пяти команд, с которого из числа 7 будет получено число 33.
ответить Скорее
Ответы на вопрос:
#include <iostream>
#include <vector>
#include <set>
#define ll long long
using namespace std;
signed main() {
ll n;
cin >> n;
vector<pair<ll,ll>> a(n);
vector<ll> pref(n,0),d(n,0),ans(n,0);
set<ll> s;
for(ll i = 0; i < n; i++){
cin >> a[i].first;
a[i].second = i;
s.insert(a[i].first);
if(i == 0)
pref[i] = a[i].first;
else
pref[i] = pref[i-1] + a[i].first;
d[i] = s.size();
}
if(d[n-1] > 1 || n == 1)
ans[a[n-1].second] = 1;
for(ll i = n - 2; i >= 0; i--){
if(pref[i] > a[i + 1].first && ans[a[i+1].second] == 1 && d[i] > 1)
ans[a[i].second] = 1;
}
for(ll i = 0; i < n; i++)
cout << ans[i] << " ";
}
P.S. Откуда задача, уж больно часто я ее встречаю на подобных сайтах
Популярно: Информатика
-
lizabjnyjyve28.04.2021 21:20
-
Aiutka57421.02.2022 23:56
-
hohlov22820.08.2021 15:18
-
шкуренок4612.06.2023 05:04
-
den658015.10.2020 20:31
-
sirushdarbinyap0aqdv18.11.2020 15:03
-
armen1983armen18.11.2020 08:17
-
lisaBeTa24.02.2020 14:03
-
gv8ux27.05.2022 07:51
-
daniil10457899Yb04.12.2021 23:13