結果
問題 | No.2650 [Cherry 6th Tune *] セイジャク |
ユーザー |
|
提出日時 | 2024-02-23 23:20:05 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 278 ms / 2,500 ms |
コード長 | 1,670 bytes |
コンパイル時間 | 2,637 ms |
コンパイル使用メモリ | 257,556 KB |
実行使用メモリ | 6,016 KB |
最終ジャッジ日時 | 2024-09-29 08:50:09 |
合計ジャッジ時間 | 11,730 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 31 |
ソースコード
#include <bits/stdc++.h>using namespace std;using ll=long long;const ll mod=998244353;vector<pair<int,int>> sortedx;struct lst{int sz,n;vector<int> node;lst(){}lst(int n):n(n){sz=1;while(sz<n)sz*=2;node.resize(2*sz,-1);}void operate(int l,int r,int t){l+=sz;r+=sz;while(l<r){if(l&1)node[l++]=t;if(r&1)node[--r]=t;l>>=1;r>>=1;}}void print(){for(int i=1;i<sz;i++){node[i*2]=max(node[i*2],node[i]);node[i*2+1]=max(node[i*2+1],node[i]);}vector<int> ans(n);for(int i=0;i<n;i++)ans[sortedx[i].second]=node[i+sz];for(int i=0;i<n;i++)cout<<ans[i]<<endl;}};int main(){int n,a;cin>>n>>a;vector<int> x(n);for(int i=0;i<n;i++)cin>>x[i];if(n==1){int t;cin>>t;int ans=-1;for(int i=0;i<t;i++){int l,r;cin>>l>>r;if(l<=x[0]&&x[0]<=r)ans=i+1;}cout<<ans<<endl;return 0;}sortedx.resize(n);for(int i=0;i<n;i++){sortedx[i].first=x[i];sortedx[i].second=i;}sort(sortedx.begin(),sortedx.end());auto f=[&](int p){int l=-1,r=n;while(l+1<r){int c=(l+r)/2;if(sortedx[c].first<=p)l=c;else r=c;}return l;};lst ls(n);int t;cin>>t;for(int i=0;i<t;i++){int l,r;cin>>l>>r;l=f(l-1)+1;r=f(r)+1;ls.operate(l,r,i+1);}ls.print();}