Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream f ("castig.in");
- ofstream g ("castig.out");
- int n , x;
- long long a[100005];
- unsigned short k;
- struct chestie
- {
- int st , dr;
- }maxim[100005];
- int main()
- {
- int i , l = 0 , t , st , dr;
- long long maxi2 = 99999999999 , maxi = 0 , mini = 999999999;
- f >> n >> k;
- for(i = 1 ; i <= n ; i++)
- {
- f >> x;
- a[i] = x + a[i - 1];
- }
- for(i = 1 ; i <= n - k + 1 ; i++)
- {
- if(maxi < a[i + k - 1] - a[i - 1])
- {
- maxi = a[i + k - 1] - a[i - 1];
- l = 1;
- maxim[l].dr = i + k - 1;
- maxim[l].st = i;
- }
- else if(maxi == a[i + k - 1] - a[i - 1])
- {
- maxim[++l].dr = i + k - 1;
- maxim[l].st = i;
- }
- }
- if(l > 2)
- {
- g << maxi;
- return 0;
- }
- if(l == 2)
- {
- if(maxim[2].st - 1 - (maxim[1].dr + 1) + 1 < k)
- {
- for(i = maxim[1].st + 1 ; i <= maxim[1].dr ; i++)
- if(i + k - 1 <= n && i + k - 1 >= maxim[2].st && maxi2 > a[i + k - 1] - a[i - 1])
- dr = i + k - 1 , st = i , maxi2 = a[i + k - 1] - a[i - 1];
- for(i = 1 ; i <= st - k ; i++)
- maxi2 = max(maxi2 , a[i + k - 1] - a[i - 1]);
- for(i = dr + 1 ; i <= n - k + 1 ; i++)
- maxi2 = max(maxi2 , a[i + k - 1] - a[i - 1]);
- }
- else maxi2 = maxi;
- g << maxi2;
- return 0;
- }
- maxi = 0;
- for(i = 1 ; i <= maxim[1].st - k ; i++)
- maxi = max(maxi , a[i + k - 1] - a[i - 1]);
- for(i = maxim[1].dr + 1 ; i <= n - k + 1 ; i++)
- maxi = max(maxi , a[i + k - 1] - a[i - 1]);
- g << maxi;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement