1061
//int n,k; //int kk[50]; //int m[10100] = {0}; //cin >> n >> k; //FOR(i,k) // cin >> kk[i]; //int t = *min_element(kk, kk+k); //m[t] = 1; //FOR(i,n) //{ // FOR(j,k) // { // // } //} #include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> #include <math.h> #include <limits.h> using namespace std; // Datatypes typedef vector<int> vi; typedef vector<string> vs; typedef vector<vi> vvi; typedef pair<int,int> ii; typedef long long ll; typedef long double ld; // Define #define sz(a) int((a).size()) #define pb push_back #define all(c) (c).begin(),(c).end() #define present(c,x) ((c).find(x) != (c).end()) #define cpresent(c,x) (find(all(c),x) != (c).end()) #define FOR(_i,_n) for(int (_i) = 0; (_i) < (_n); (_i)++) #define mp make_pair // Constants const double eps = 1e-8; const double PI = 3.1415926535897932384626433832795; #define INPUT_FILE "xo.in" #define OUTPUT_FILE "xo.out" char m[102000]; int main(void) { #ifdef ALEX freopen("input.in", "r", stdin); freopen("output.out", "w", stdout); #else //freopen(INPUT_FILE, "r", stdin); //freopen(OUTPUT_FILE, "w", stdout); #endif int n; int k; int l = -1; int ms = INT_MAX; int j; bool f = false; int ss = 0; cin >> n >> k; FOR(i,(n/80)+1) scanf("%s", &m[i*80]); for(int i = 0; i < n; i++) { if(f) { if(m[i+k-1] == '*') { f = false; i += k - 1; } else { ss -= m[i-1] - '0'; ss += m[i+k-1] - '0'; } } else { ss = 0; int c = 0; for(j = 0; j < n; j++) { if((i + j) > (n-1)) break; if(m[i+j] == '*') { c = 0; ss = 0; } else { ss += m[i+j] - '0'; c++; } if(c == k) { f = true; break; } } if(!f) i += j; else i += (j-k+1); } if(f) { if(ms > ss) { l = i; ms = ss; } } if((i + k) >= n) break; } cout << l+1; return 0; }
page revision: 0, last edited: 08 May 2007 21:08