데이터 구조 multiset hdu - 2275 - Kiki & Little Kiki 1
2014 단어 데이터 구조
http://acm.hdu.edu.cn/showproblem.php?pid=2275
제목:
두 가지 조작 이 있 습 니 다.
1. push a 는 a 를 배열 에 넣 습 니 다.
2. pop a 출력 은 a 의 최대 수 를 초과 하지 않 고 제거 합 니 다.
문제 풀이 방향:
멀 티 세트 로 넘 어 갈 수 있어 요.
조작 2 에 대해 서 는 용기 안에 이 숫자 가 있 는 지 없 는 지 를 먼저 판단 하고 있 으 면 직접 출력 한다.없 으 면 a 를 용기 에 넣 고 a 의 위 치 를 찾 습 니 다. - 이전 위 치 를 얻 고 마지막 으로 두 개의 교체 기 를 삭제 합 니 다.
코드:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
//#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/
char ki[10];
multiset<int>mys;
int main()
{
int n,d;
multiset<int>::iterator it1,it;
while(scanf("%d",&n)!=EOF)
{
mys.clear();
for(int i=1;i<=n;i++)
{
scanf("%s%d",ki,&d);
if(ki[1]=='u')
mys.insert(d);
else
{
if(mys.empty()||d<*mys.begin())
{
printf("No Element!
");
continue;
}
it=mys.find(d);
if(it!=mys.end()) // ,
{
printf("%d
",d);
mys.erase(it);
continue;
}
mys.insert(d); // d d , -- , d
it=it1=mys.find(d);
printf("%d
",*(--it));
mys.erase(it); //
mys.erase(it1);
}
}
puts("");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.