Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 2

Iasi 2015

Sub 1
1.A
2. a) 0
b) 1230
c)
int aux=n;
for(int i=1;n!=aux/10;++i)
n--;

Sub 2
1.C
2.C

4.
#include <iostream>
#include<vector>
#include<queue>
#include<algorithm>
#include <cmath>
using namespace std;
//ifstream f("fisier.in");
//ofstream g("fisier.out");
int sol[101],p,a[101],b[101],s,v[101],n,sum,ok,la,lb,fr[101];
void afis(int k)
{
ok=1;
for(int i=1;i<=k;++i)
a[i]=sol[v[i]],fr[a[i]]--;
la=k;

}
void bkt(int k)
{
for(int i=v[k-1]+1;i<=n;++i)
if(i!=p)
{
v[k]=i;
s+=sol[i];
if(2*s==sum && !ok )
{afis(k);return;}
else
if(s<sum/2)
bkt(k+1);
s-=sol[i];
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
cin>>sol[i],sum+=sol[i],fr[sol[i]]++;
cin>>p;
sum-=p;
fr[p]--;
bkt(1);
if(ok)
{
cout<<"la:"<<la<<'\n';
for(int i=1;i<=la;++i)
cout<<a[i]<<' ';
cout<<'\n';
int x=n-la-1,lb=n-la-1;
for(int i=1;i<=n;++i)
if(fr[sol[i]])
fr[sol[i]]--,b[lb-x+1]=sol[i],x--;
cout<<"lb:"<<lb<<'\n';
for(int i=1;i<=lb;++i)
cout<<b[i]<<' ';
}
else
cout<<"partitie inexistenta";
}

You might also like