Ranking (as of 2013-06-08): 518 out of 920
Language: C++
/*
UVa 11111 - Generalized Matrioshkas
To build using Visucal Studio 2008:
cl -EHsc -O2 generalized_matrioshkas.cpp
*/
#include <iostream>
#include <string>
#include <sstream>
#include <stack>
#include <utility>
#include <cstdlib>
using namespace std;
int main(int /* argc */, char** /* argv */)
{
string line;
while (getline(cin, line)) {
istringstream iss(line);
stack< pair<int, int> > st;
// first is the original capacity, second is the remaining capacity
bool toys = false, valid = true;
int n;
while (iss >> n && valid) {
toys = true;
if (n < 0) { // start of a new toy
n = labs(n);
if (!st.empty()) {
if (st.top().second <= n)
valid = false;
else
st.top().second -= n;
}
st.push(make_pair(n, n));
}
else { // end of the toy
if (st.empty() || st.top().first != n)
valid = false;
else
st.pop();
}
}
if (!toys || !st.empty())
valid = false;
cout << ((valid) ? ":-) Matrioshka!\n" : ":-( Try again.\n");
}
return 0;
}
No comments:
Post a Comment