Pagini recente » Cod sursa (job #1203663) | Cod sursa (job #544091) | Cod sursa (job #493852) | Cod sursa (job #370933) | Cod sursa (job #2113757)
#include<cstdio>
#include<fstream>
#include<set>
using namespace std;
FILE *f=fopen("schi.in","r");
ofstream g("schi.out");
struct concurent
{
int poz,cand;
};
inline bool cmp(const concurent &a,const concurent &b)
{
if(a.poz==b.poz)
return a.cand>b.cand;
return a.poz<b.poz;
}
set<concurent, bool(*)(const concurent&,const concurent&)>s(cmp);
concurent add[30002],sters[30002];
int main()
{
int n,i,a,k,j;
set<concurent>::iterator it,start;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&a);
start=s.upper_bound(concurent{a,n+1});
k=0;
for(it=start;it!=s.end();it++)
{
add[++k].poz=it->poz+1;
add[k].cand=it->cand;
sters[k].poz=it->poz;
sters[k].cand=it->cand;
//s.erase(*it);
//s.insert(add);
}
for(j=1;j<=k;j++)
s.erase(sters[j]);
for(j=1;j<=k;j++)
s.insert(add[j]);
s.insert(concurent{a,i});
}
for(it=s.begin();it!=s.end();it++)
g<<it->cand<<'\n';
return 0;
}