# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
170289 | rzbt | 케이크 (CEOI14_cake) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define all(x) x.begin(),x.end()
#define MAXN 250005
using namespace std;
int n,a;
int niz[MAXN];
int seg[4*MAXN];
int lazy[4*MAXN];
set<pair<int,int> > svi[MAXN];
void dodaj(int l,int d,int p,int x,int k){
if(l==d){
seg[k]=p;
return;
}
int mid=(l+d)/2;
if(p<=mid)return dodaj(l,mid,p,x,k+k);
else dodaj(mid+1,d,p,x,k+k+1);
seg[k]=max(seg[k+k],seg[k+k+1]);
}
int dobij(int l,int d,int tl,int td,int k){
if(l>td || d<tl)return 0;
if(l>=tl && d<=td)return seg[k];
int mid=(l+d)/2;
return max(dobij(l,mid,tl,td,k+k),dobij(mid+1,d,tl,td,k+k+1));
}
void izgradi(int l,int d,int k){
if(l==d){
seg[k]=niz[l];
return;
}
int mid=(l+d)/2;
izgradi(l,mid,k+k);
izgradi(l,mid,k+k);
seg[k]=max(seg[k],seg[k+k+1]);
}
int main()///PROMENI U LONG LONG
{
scanf("%d %d", &n, &a);
for(int i=1;i<=n;i++){
scanf("%d",niz+i);
niz[i]*=500005;
svi.insert(mp(niz[i],i));
}
int qq;
scanf("%d", &qq);
while(qq--){
char qt[5];
scanf("%s", qt);
if(qt[0]=='E'){
int koji,postaje;
scanf("%d %d", &koji, &postaje);
svi.erase(mp(niz[koji],koji));
auto it=svi.back();
}
}
return 0;
}