#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double db; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<db> vdb; typedef vector<pii> vii; typedef vector<pll> vll; #define st first #define nd second #define sz(x) ((int)x.size()) #define all(x) (x).begin(),(x).end() #define pb push_back #define BOOST ios_base::sync_with_stdio(0);cin.tie(0); #define FOR(i,j,k) for(auto i = (j); i<(k); i++) //djjjbbbbbbjjjddd int main() { BOOST; int n,k,t; cin>>n>>k>>t; string V; cin>>V; int wynik = -1; //jeśli nie jedzie do pracy { int on = 0; int off = 0; int wolne = 0; for (int k = 0; k < n; k++) { if (V[k]=='1') off++; if (V[k]=='2') on++; if (V[k]=='3') wolne++; } int k2 = k - off; if (k2 >= 0) wynik = max(wynik, wolne + off + min(k2, on)); } for (int i = 0; i <= n - 2 * t; i++) { // i - moment wyjazdu z domu // Bajtazar jest w biurze w momencie i + t int off_dom = 0; int on_dom = 0; int wolne_dom = 0; int spotkania_jazda = 0; // ustawienie początkowe zmiennych for (int k = 0; k < i; k++) { if (V[k] == '1') off_dom++; else if (V[k] == '2') on_dom++; else wolne_dom++; } for (int k = i; k < i + 2 * t; k++) { if (V[k] != '3') spotkania_jazda++; } for (int k = i + 2 * t; k < n; k++) { if (V[k] == '1') off_dom++; else if (V[k] == '2') on_dom++; else if (V[k] == '3') wolne_dom++; } for (int j = i + t; j <= n - t; j++) { // j - moment wyjazdu z biura // Bajtazar jest w domu w momencie j + t int k2 = k - spotkania_jazda - off_dom; if (k2 >= 0) wynik = max(wynik, wolne_dom + off_dom + min(k2, on_dom)); if (j != n - t) { //przesunięcie zmiennych //dddjjjbbb j jj d dd //dddjjjbbb b jj j dd if (V[j] != '3') spotkania_jazda--; if (V[j + t] == '1') { spotkania_jazda++; off_dom--; } else if (V[j + t] == '2') { spotkania_jazda++; on_dom--; } else if (V[j + t] == '3') { wolne_dom--; } } } } cout<<wynik; }
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double db; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<db> vdb; typedef vector<pii> vii; typedef vector<pll> vll; #define st first #define nd second #define sz(x) ((int)x.size()) #define all(x) (x).begin(),(x).end() #define pb push_back #define BOOST ios_base::sync_with_stdio(0);cin.tie(0); #define FOR(i,j,k) for(auto i = (j); i<(k); i++) //djjjbbbbbbjjjddd int main() { BOOST; int n,k,t; cin>>n>>k>>t; string V; cin>>V; int wynik = -1; //jeśli nie jedzie do pracy { int on = 0; int off = 0; int wolne = 0; for (int k = 0; k < n; k++) { if (V[k]=='1') off++; if (V[k]=='2') on++; if (V[k]=='3') wolne++; } int k2 = k - off; if (k2 >= 0) wynik = max(wynik, wolne + off + min(k2, on)); } for (int i = 0; i <= n - 2 * t; i++) { // i - moment wyjazdu z domu // Bajtazar jest w biurze w momencie i + t int off_dom = 0; int on_dom = 0; int wolne_dom = 0; int spotkania_jazda = 0; // ustawienie początkowe zmiennych for (int k = 0; k < i; k++) { if (V[k] == '1') off_dom++; else if (V[k] == '2') on_dom++; else wolne_dom++; } for (int k = i; k < i + 2 * t; k++) { if (V[k] != '3') spotkania_jazda++; } for (int k = i + 2 * t; k < n; k++) { if (V[k] == '1') off_dom++; else if (V[k] == '2') on_dom++; else if (V[k] == '3') wolne_dom++; } for (int j = i + t; j <= n - t; j++) { // j - moment wyjazdu z biura // Bajtazar jest w domu w momencie j + t int k2 = k - spotkania_jazda - off_dom; if (k2 >= 0) wynik = max(wynik, wolne_dom + off_dom + min(k2, on_dom)); if (j != n - t) { //przesunięcie zmiennych //dddjjjbbb j jj d dd //dddjjjbbb b jj j dd if (V[j] != '3') spotkania_jazda--; if (V[j + t] == '1') { spotkania_jazda++; off_dom--; } else if (V[j + t] == '2') { spotkania_jazda++; on_dom--; } else if (V[j + t] == '3') { wolne_dom--; } } } } cout<<wynik; } |