Problem Link: https://cses.fi/problemset/task/1091/
I am assuming there is some kind of issue relating to time complexity but I am unable to identify what I am doing wrong here.
Getting Time Limit Exceeded verdict in this code:
#include<bits/stdc++.h>
using namespace std;
#define int long long int
main()
{
int n,m;
scanf("%lld %lld",&n,&m);
vector<int>tickets;
for(int i=0; i<n; i++)
{
int x;
scanf("%lld",&x);
tickets.push_back(x);
}
sort(tickets.begin(),tickets.end());
for(int i=0; i<m; i++)
{
int x;
scanf("%lld",&x);
auto index=lower_bound(tickets.begin(),tickets.end(),x);
if(index==tickets.begin() and (*index>x or index==tickets.end()))
printf("-1\n");
else
{
if(*index!=x)
index--;
printf("%lld\n",*index);
tickets.erase(index);
}
}
}
Getting Accepted verdict in this code:
#include<bits/stdc++.h>
using namespace std;
#define int long long int
main()
{
int n,m;
scanf("%lld %lld",&n,&m);
multiset<int>tickets;
for(int i=0; i<n; i++)
{
int x;
scanf("%lld",&x);
tickets.insert(x);
}
for(int i=0; i<m; i++)
{
int x;
scanf("%lld",&x);
auto index=tickets.lower_bound(x);
if(index==tickets.begin() and (*index>x or index==tickets.end()))
printf("-1\n");
else
{
if(*index!=x)
index--;
printf("%lld\n",*index);
tickets.erase(index);
}
}
}
Not understanding why is this happening.