#include <iostream>
#include <vector>
using namespace std;
int main()
{
int wynik = 0;
int wynikMax = 0;
int n;
cin >> n;
vector<int> pearls(n);
vector<bool> beauty(n);
int max = 0;
int min = 1000000;
for (int i = 0; i < n; i++) {
cin >> pearls[i];
if (pearls[i] > max) {
beauty[i] = true;
max = pearls[i];
wynik++;
}
if (pearls[i] < min) {
min = pearls[i];
}
}
wynikMax = wynik;
int wynikMaxMax = max - min + 1;
/*
for (int i = 0; i < n; i++) {
cout << pearls[i] << " ";
}
cout << endl;
for (int i = 0; i < n; i++) {
if (beauty[i]) {
cout << pearls[i] << " ";
}
}
cout << endl;
*/
int k = n - 1;
while (k > 0) {
if (!beauty[k]) {
beauty[k] = true;
wynik++;
}
int j = (k + 1) % n;
while (j != k && pearls[j] <= pearls[k]) {
if (beauty[j]) {
beauty[j] = false;
wynik--;
}
j = (j + 1) % n;
}
if (wynik > wynikMax) {
wynikMax = wynik;
}
if (wynikMax == wynikMaxMax) {
break;
}
/*
cout << "------" << endl;
for (int i = 0; i < n; i++) {
cout << pearls[(i + k) % n] << " ";
}
cout << endl;
for (int i = 0; i < n; i++) {
if (beauty[(i + k) % n]) {
cout << pearls[(i + k) % n] << " ";
}
}
cout << endl;
*/
k--;
}
//cout << "Wynik" << endl;
cout << wynikMax << endl;
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <iostream> #include <vector> using namespace std; int main() { int wynik = 0; int wynikMax = 0; int n; cin >> n; vector<int> pearls(n); vector<bool> beauty(n); int max = 0; int min = 1000000; for (int i = 0; i < n; i++) { cin >> pearls[i]; if (pearls[i] > max) { beauty[i] = true; max = pearls[i]; wynik++; } if (pearls[i] < min) { min = pearls[i]; } } wynikMax = wynik; int wynikMaxMax = max - min + 1; /* for (int i = 0; i < n; i++) { cout << pearls[i] << " "; } cout << endl; for (int i = 0; i < n; i++) { if (beauty[i]) { cout << pearls[i] << " "; } } cout << endl; */ int k = n - 1; while (k > 0) { if (!beauty[k]) { beauty[k] = true; wynik++; } int j = (k + 1) % n; while (j != k && pearls[j] <= pearls[k]) { if (beauty[j]) { beauty[j] = false; wynik--; } j = (j + 1) % n; } if (wynik > wynikMax) { wynikMax = wynik; } if (wynikMax == wynikMaxMax) { break; } /* cout << "------" << endl; for (int i = 0; i < n; i++) { cout << pearls[(i + k) % n] << " "; } cout << endl; for (int i = 0; i < n; i++) { if (beauty[(i + k) % n]) { cout << pearls[(i + k) % n] << " "; } } cout << endl; */ k--; } //cout << "Wynik" << endl; cout << wynikMax << endl; return 0; } |
English