uncmp.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "testlib.h"
  2. #include <vector>
  3. using namespace std;
  4. int main(int argc, char * argv[]) {
  5. setName("compare unordered sequences of signed int%u numbers", int(8 * sizeof(long long)));
  6. registerTestlibCmd(argc, argv);
  7. vector<long long> ja, pa;
  8. while (!ans.seekEof())
  9. ja.push_back(ans.readLong());
  10. while (!ouf.seekEof())
  11. pa.push_back(ouf.readLong());
  12. if (ja.size() != pa.size())
  13. quitf(_wa, "Expected %u elements, but %u found", (unsigned int)(ja.size()), (unsigned int)(pa.size()));
  14. sort(ja.begin(), ja.end());
  15. sort(pa.begin(), pa.end());
  16. if (ja != pa)
  17. quitf(_wa, "Expected sequence and output are different (as unordered sequences) [size=%u]", (unsigned int)(ja.size()));
  18. string message;
  19. if (ja.size() != 1)
  20. if (ja.empty())
  21. message = "empty sequence";
  22. else
  23. message = vtos(ja.size()) + " numbers (in increasing order):";
  24. else
  25. message = vtos(ja.size()) + " number:";
  26. if (ja.size() <= 5)
  27. for (int i = 0; i < min(int(ja.size()), 5); i++)
  28. message += " " + vtos(ja[i]);
  29. else {
  30. for (int i = 0; i < 2; i++)
  31. message += " " + vtos(ja[i]);
  32. message += " ...";
  33. for (int i = 0; i < 2; i++)
  34. message += " " + vtos(ja[ja.size() - 2 + i]);
  35. }
  36. quitf(_ok, "%s", message.c_str());
  37. }