fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MAX_LEN = 100;
  5.  
  6. void sortArray(int v[], int n) {
  7. bool isSorted = false;
  8. while (!isSorted) {
  9. isSorted = true;
  10. for (int i = 0; i < n - 1; ++i) {
  11. if (v[i] > v[i + 1]) {
  12. swap(v[i], v[i + 1]);
  13. isSorted = false;
  14. }
  15. }
  16. }
  17. }
  18.  
  19. bool isArithmeticProgression(const int v[], const int &n) {
  20. int copyArr[MAX_LEN];
  21. for (int i = 0; i < n; ++i) {
  22. copyArr[i] = v[i];
  23. }
  24. sortArray(copyArr, n);
  25. for (int i = 1; i < n; ++i) {
  26. if (copyArr[i] - copyArr[i - 1] != copyArr[1] - copyArr[0]) {
  27. return false;
  28. }
  29. }
  30. return true;
  31. }
  32.  
  33. void printMaxValidSeq(const int v[], const int &n) {
  34. int maxSeq = 0, start = 0, end = 1;
  35. for (int i = 1; i < n; ++i) {
  36. int diff = v[i] - v[i - 1];
  37. int currValidSeq = 1;
  38. for (int j = i + 1; j < n; ++j) {
  39. if (v[j] - v[j - 1] == diff) {
  40. ++currValidSeq;
  41. } else {
  42. break;
  43. }
  44. }
  45. if (currValidSeq > maxSeq) {
  46. maxSeq = currValidSeq;
  47. start = i - 1;
  48. end = i + currValidSeq;
  49. }
  50. }
  51. for (int i = start; i < end; ++i) {
  52. cout << v[i] << ' ';
  53. }
  54. }
  55.  
  56. void printResult(int v[], const int &n) {
  57. if (n == 1) {
  58. cout << "NU\n" << v[0];
  59. } else if (isArithmeticProgression(v, n)) {
  60. cout << "DA\n";
  61. sortArray(v, n);
  62. cout << v[1] - v[0];
  63. } else {
  64. cout << "NU\n";
  65. printMaxValidSeq(v, n);
  66. }
  67. }
  68.  
  69. int main() {
  70. int n, v[MAX_LEN];
  71. cin >> n;
  72. for (int i = 0; i < n; ++i) {
  73. cin >> v[i];
  74. }
  75. printResult(v, n);
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0s 5308KB
stdin
2
1 1
stdout
DA
0