Pagini recente » Cod sursa (job #2522966) | Cod sursa (job #1836469) | Profil ionut_cristian.tacu | Cod sursa (job #1728244) | Cod sursa (job #3037971)
#include <fstream>
#include <vector>
#include <cstring>
#include <map>
using namespace std;
ifstream cin("nums.in");
ofstream cout("nums.out");
vector<string> v;
map<string, bool> mp;
bool cmp(string s1, string s2)
{
if(s1.size() < s2.size())
return false;
else if(s1.size() > s2.size())
return true;
for(int i = 0; i < s1.size(); i++)
{
if(s1[i] > s2[i])
return true;
else if(s1[i] < s2[i])
return false;
}
return false;
}
int main()
{
int n;
cin>>n;
v.push_back("0");
for(int i = 1; i <= n; i++)
{
int c;
cin>>c;
if(c == 1)
{
string s;
cin>>s;
if(mp[s] == true)
continue;
mp[s] = true;
int st = 0, dr = v.size() - 1, mij, poz = 0;
while(st <= dr)
{
mij = (st + dr) / 2;
if(cmp(s, v[mij]) == true)
poz = mij, st = mij + 1;
else
dr = mij - 1;
}
v.insert(v.begin() + poz + 1, s);
/*for(int i = 0; i < v.size(); i++)
cout<<v[i]<<" ";
cout<<'\n';*/
}
else
{
int nr;
cin>>nr;
cout<<v[nr]<<'\n';
}
}
return 0;
}