Documente Academic
Documente Profesional
Documente Cultură
//greedy
/*#include <iostream>
int n,S,v[1001];
if(st<dr)
int m=(st+dr)/2;
int aux=v[st];
v[st]=v[m];
v[m]=aux;
int i=st,j=dr,d=0;
while(i<j)
if(v[i]>v[j])
aux=v[i];
v[i]=v[j];
v[j]=aux;
d=1-d;
}
i+=d;
j-=1-d;
QuickSort(v,st,i-1);
QuickSort(v,i+1,dr);
int main()
cin>>n>>S;
for(int i=1;i<=n;i++)
cin>>v[i];
QuickSort(v,1,n);
int k=0;
{k++;
S-=v[i];}
cout<<k<<" ";
if(k==n)
cout<<0<<endl;
else
cout<<v[k+1]-S<<endl;
return 0;
*/
//backtracking
/*#include <iostream>
using namespace std;
void tipar(int n)
if (sum<=v[st[i]])
sum+=v[st[i]];
k++;
poz=st[i];
if (k>maxim) {
maxim=k;
bani=sum-v[poz]-1;
int valid(int k)
if (st[i]==st[k])
return 0;
return 1;
void back(int k)
{
if (k==n+1)
tipar(n);
else
st[k]=i;
if (valid(k))
back(k+1);
int main()
cin>>n>>S;
cin>>v[i];
back(1);
cout<<maxim<<" "<<bani;
return 1;
*/
//#2684
4 5 7, 6 8, 2 3 și 1.*/
//backtracking
/*#include <iostream>
int st[100001], k, n;
int v[100001];
void init() {
st[k] = 0;
int sucessor() {
if (st[k] < n) {
st[k]++;
return 1;
} else {
return 0;
int valid() {
return 0;
}
int nmax = 0;
return 0;
nmax = st[i];
return 1;
int solutie() {
return k == n;
void tipar() {
int max = 0;
max = st[i];
int nmax = 0;
nmax = j;
cout<<"{";
if (st[j] == i) {
if (j == nmax) {
cout<<j<<"} ";
} else {
cout<<j<<", ";
cout<<"\n";
void back() {
int AS = 0;
k = 1; init();
while (k > 0) {
if (AS) {
if (solutie()) {
tipar();
} else {
k++;
init();
} else {
k--;
int main()
cin>>n;
cin>>v[i];
back();
//greedy
#include <iostream>
int main() {
int n, x, cnt = 0;
cin >> n;
int v[n];
cin >> x;
int st = 1, dr = cnt;
v[++cnt] = x;
else {
v[st] = x;
*/