/*
寻找couple,类似括号匹配,利用栈解决,
注意输入的位置是从1开始的,最后只要栈空即代表成功
另:每一个case之后都要记得初始化数据
另;对容器进行操作之前记得检查是否为空
*/
/*
Passed all 2 test cases
Run Time: 0.18secs
Run Memory: 1488KB
*/
#include <iostream>
#include <stack>
using namespace std;
int couples[200000];
int main()
{
int N;
int a;
int b;
cin >> N;
while (N > 0){
stack<int> comput;
for(int i=0; i<N; i++){
cin >> a >> b;
couples[a-1] = i;
couples[b-1] = i;
}
for(int i=0; i<2*N; i++){
int buf = couples[i];
int top = -1;
if(!comput.empty())
top = comput.top();
if(buf == top){ //相等说明找到了一个couple,将栈顶弹出
comput.pop();
}else{ //否则不是couple,将新元素压入栈
comput.push(buf);
}
}
if(comput.empty()){ //如果栈空,则说明可以完美配对
cout << "Yes" << endl;
}else{ //否则配对失败
cout << "No" << endl;
}
cin >> N;
}
return 0;
}
Sicily 1021. Couples
最新推荐文章于 2019-06-26 23:26:56 发布