Pagini recente » Diferente pentru problema/alianta intre reviziile 3 si 2 | Cod sursa (job #3318805) | Monitorul de evaluare | Cod sursa (job #3321605) | Cod sursa (job #3317608)
#include<bits/stdc++.h>
using namespace std;
int main(){
ifstream f("scmax.in");
ofstream g("scmax.out");
int n;
f>>n;
vector <pair<int,int>> v(n);
//vector <int>dp;
for(int i=0; i<n; i++){
f>>v[i].first;
v[i].second=i;
//dp[i]=1;
}
sort(v.begin(), v.end());
queue<int>q;
q.push(v[n-1].first);
int cont=1, pp=0,a=0;
for(int i=n-2; i>=0; i--){
if(v[i].second>v[i-1].second){
cont++;
q.push(v[i].first);
}
if(v[i].second<v[i-1].second&&cont==1){
pp=q.size();
q.push(v[i].first);
cont=1;
}
}
g<<cont<<"\n";
for(int i=0; i<q.size(); i++){
if(i<pp){
q.pop();
} else{
g << q.front()<<" ";
q.pop();
}
}
return 0;
}