# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
847272 | HoriaHaivas | RMQ (NOI17_rmq) | C++14 | 1 ms | 6492 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
/*
"TLE is like the wind, always by my side"
- Yasuo - 2022 -
*/
#include<bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
using namespace std;
struct qq
{
int l;
int r;
int x;
};
struct ptval
{
int nr;
int poz;
};
ptval val[100001];
const int inf=INT_MAX;
qq query[100001];
qq query2[100001];
qq aux[100001];
int st[100001];
int finl[100001];
bool placed[100001];
bool used[100001];
int lazy[400001];
bool cmp (qq a, qq b)
{
if (a.x!=b.x)
return a.x>b.x;
else if (a.l!=b.l)
return a.l<b.l;
else
return a.r<b.r;
}
bool cmp2(ptval a, ptval b)
{
return a.nr>b.nr;
}
bool cmp3 (qq a, qq b)
{
if (a.x!=b.x)
return a.x<b.x;
else if (a.l!=b.l)
return a.l<b.l;
else
return a.r<b.r;
}
void propagate(int parent, int child)
{
lazy[child]=lazy[parent];
}
void lazy_update (int l, int r, int val, int qa, int qb, int x)
{
if (lazy[val]!=-1)
{
if (r!=l)
{
propagate(val,val*2);
propagate(val,val*2+1);
}
lazy[val]=-1;
}
if (l>qb || r<qa)
return;
if (qa<=l && r<=qb)
{
lazy[val]=x;
return;
}
int mid;
mid=(l+r)/2;
if (qa<=mid)
lazy_update(l,mid,val*2,qa,qb,x);
if (qb>mid)
lazy_update(mid+1,r,val*2+1,qa,qb,x);
}
int qry (int l, int r, int val, int qa, int qb)
{
if (qa<=l && r<=qb)
{
return lazy[val];
}
if (lazy[val]!=-1)
{
if (r!=l)
{
propagate(val,val*2);
propagate(val,val*2+1);
}
lazy[val]=-1;
}
if (r<qa || l>qb)
return inf;
int mid,ans;
mid=(l+r)/2;
ans=inf;
if (qa<=mid)
ans=min(ans,qry(l,mid,val*2,qa,qb));
if (qb>mid)
ans=min(ans,qry(mid+1,r,val*2+1,qa,qb));
return ans;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie();
cout.tie();
int n,q,i,j,t,q2,big,dif,k;
bool ok;
ok=true;
cin >> n >> q;
for (i=1; i<=q; i++)
{
cin >> query[i].l >> query[i].r >> query[i].x;
query2[i]=query[i];
}
sort(query+1,query+1+q,cmp);
sort(query2+1,query2+1+q,cmp);
t=0;
for (j=1; j<=q; j++)
{
for (k=query[j].l+1;k<=query[j].r+1;k++)
{
finl[k]=query[j].x;
}
}
for (j=1;j<=n;j++)
{
cout << finl[j] << " ";
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |