Problem p00061 (C++) — buggy submission, verdict: Runtime Error

#include <algorithm>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
using namespace std;

typedef long long ll;
typedef pair<int, int> P;

#define all(c) (c).begin(), (c).end()
#define pb push_back
#define mp make_pair
#define ERASE(v, i) (v).erase(remove(all(v), i), (v).end())
#define rep(i, n) for (int i = 0; i < (int)n; ++i)
#define each(it, c)                                                            \\
  for (typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it)
#define debug(x) cerr << #x << " = " << (x) << endl;
#define LINE cerr << "LINE: " << __LINE__ << endl;

inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T> inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
template <class T> void preview(T a, T b) {
  for (T it = a; it != b; ++it)
    cerr << *it << " ";
  cerr << endl;
}

const int INF = 100000000;
const double PI = acos(-1.0), EPS = 1e-10;

int main() {
  map<int, int> m;
  vector<int> points;
  for (int no, ac; scanf(" %d,%d", &no, &ac), no || ac;) {
    m[no] = ac;
    points.pb(ac);
  }
  sort(points.rbegin(), points.rend());
  points.erase(unique(all(points)), points.end());

  for (int no; ~scanf(" %d", &no);) {
    int p = m[no];
    cout << (find(all(points), p) - points.begin()) + 1 << endl;
  }

  return 0;
}

Error: 0
30 20 10 


Fixed submission:

#include <algorithm>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <functional>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
using namespace std;

typedef long long ll;
typedef pair<int, int> P;

#define all(c) (c).begin(), (c).end()
#define pb push_back
#define mp make_pair
#define ERASE(v, i) (v).erase(remove(all(v), i), (v).end())
#define rep(i, n) for (int i = 0; i < (int)n; ++i)
#define each(it, c)                                                            \\
  for (typeof((c).begin()) it = (c).begin(); it != (c).end(); ++it)
#define debug(x) cerr << #x << " = " << (x) << endl;
#define LINE cerr << "LINE: " << __LINE__ << endl;

inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T> inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
template <class T> void preview(T a, T b) {
  for (T it = a; it != b; ++it)
    cerr << *it << " ";
  cerr << endl;
}

const int INF = 100000000;
const double PI = acos(-1.0), EPS = 1e-10;

int main() {
  map<int, int> m;
  vector<int> points;
  for (int no, ac; scanf(" %d,%d", &no, &ac), no || ac;) {
    m[no] = ac;
    points.pb(ac);
  }
  sort(points.rbegin(), points.rend());
  points.erase(unique(all(points)), points.end());

  preview(all(points));

  for (int no; ~scanf(" %d", &no);) {
    int p = m[no];
    cout << find(all(points), p) - points.begin() + 1 << endl;
  }

  return 0;
}