https://www.pbinfo.ro/?pagina=probleme&id=2684
Se dă un șir de n numere naturale. Șirul poate fi partiționat în mai multe moduri într-un număr de subșiruri strict crescătoare. De exemplu, șirul 4 6 2 5 8 1 3 7 poate fi partiționat astfel: 4 6 8 (primul subșir), 2 5 7 (al doilea) și 1 3 (al treilea). O altă modalitate este formând patru subșiruri: 4 5 7, 6 8, 2 3 și 1.
Cum se rezolva asta ?
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int n, v[1001],l[1001],siruri,f[50000],i,j,k=1;
long long mx=-1000000000;
void citire(int v[],int &n)
{
int i;
cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
}
int main()
{
citire(v,n);
for(i=1; i<=n; i++)
{
mx=v[i];
f[v[i]]++;
if(f[v[i]]<2)
{
l[k++]=v[i];
for(j=i+1; j<=n; j++)
{
if(v[j]>=mx)
{
f[v[j]]++;
if(f[v[j]]<2 || v[j]==mx)
{
mx=v[j];
l[k++]=v[j];
}
}
}
siruri++;
}
}
cout<<siruri<<endl;
for(i=1;i<k;i++)
cout<<l[i]<<' ';
return 0;
}
Explicație:
using namespace std;
int n, v[1001],l[1001],siruri,f[50000],i,j,k=1;
long long mx=-1000000000;
void citire(int v[],int &n)
{
int i;
cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
}
int main()
{
citire(v,n);
for(i=1; i<=n; i++)
{
mx=v[i];
f[v[i]]++;
if(f[v[i]]<2)
{
l[k++]=v[i];
for(j=i+1; j<=n; j++)
{
if(v[j]>=mx)
{
f[v[j]]++;
if(f[v[j]]<2 || v[j]==mx)
{
mx=v[j];
l[k++]=v[j];
}
}
}
siruri++;
}
}
cout< for(i=1;i cout< return 0;
}
using namespace std;
int v[100001],t[100001];
int main()
{int n,i,j,k=0,e,u,p=-1;
cin>>n;
for(i=0;i cin>>t[i];
v[k++]=t[0];
for(i=1;i if(t[i]<=v[k-1])v[k++]=t[i];
else{e=0;
u=k-1;
p=0;
while(e<=u){
j=(e+u)/2;
if(v[j] p=j;
u=j-1;
}
else e=j+1;
}
v[p]=t[i];
}
}
cout<}
Citește mai multe pe Brainly.ro - https://brainly.ro/tema/5602074#readmore
using namespace std;
int main()
{
int v[1001], n, i, j, subsiruri=0, x;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
while(n){
subsiruri++;
x=v[1];
for(j=1;j
v[j]=v[j+1];
n--;
for(i=1;i<=n;i++)
if(x
x=v[i];
for(j=i;j
v[j]=v[j+1];
n--;
i--;
}
}
cout<<'\n';
cout<
return 0;
}
asta ii a mea de pe pbinfo una dintre ele :)