Pagini recente » Cod sursa (job #1972467) | Cod sursa (job #88325) | Cod sursa (job #1751586) | Cod sursa (job #908342) | Cod sursa (job #2862081)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <queue>
using namespace std;
struct elozo{
int szam;
int sorszam;
int index;
};
struct CompareHeight {
bool operator()(elozo const& p1, elozo const& p2)
{
return p1.sorszam < p2.sorszam;
}
};
priority_queue<elozo,vector<elozo>,CompareHeight> p,q;
ifstream f("scmax.in");
ofstream g("scmax.out");
vector<int>v;
elozo l;
vector<int>kiir;
int beff[100001];
bool numbers[100001];
int maxmplace;
int maxmindex;
int main()
{
int n;
f>>n;
int a;
f>>a;
l.index=0;
l.sorszam=0;
l.szam=a;
v.push_back(a);
p.push(l);
for (int i=1; i<n; i++)
{
int a;
f>>a;
l.index=i;
l.sorszam=0;
l.szam=a;
v.push_back(a);
q=p;
bool didit=true;
while (!q.empty() && didit) {
elozo l2 = q.top();
q.pop();
if(l2.szam<l.szam && l.sorszam-1<l2.sorszam){
didit=false;
l.sorszam=l2.sorszam+1;
beff[l.index]=l2.index;
}
}
p.push(l);
}
f.close();
for (int i=0;i<n;i++){
cout<<beff[i]<<" ";
}
cout<<endl;
int maxmplace=p.top().sorszam;
g<<++maxmplace;
g<<endl;
maxmindex=p.top().index;
kiir.push_back(v[maxmindex]);
if(maxmindex>0){
while(maxmindex!=0){
maxmindex=beff[maxmindex];
kiir.push_back(v[maxmindex]);
}
}
while (!kiir.empty()){
g<<kiir.back()<<" ";
kiir.pop_back();
}
g.close();
return 0;
}