#include #include #define N 5050 #define DL 110 #define sqr(x) ( (x) * (x) ) int pp[N]; char p[N][DL]; int n; int s; int count(int a, int b) { int i,dl=0,del,poc=b-a; int ret; for ( i=a; i<=b; i++ ) dl+=strlen(p[i]); if (dl+(b-a)>s) return -1; del=s-dl-(b-a); // pocet medzier ret=0; for ( i=0; i0 && str[i-1]==' ' && str[i]!='\n' && str[i]!=' ') {zac=i;n++;} if (i>0 && str[i]==' ' && str[i-1]!=' ') p[n][i-zac]=0; if (str[i]!=' ' && str[i]!='\n') p[n][i-zac]=str[i]; } p[n][i-zac-1]=0; n++; } pp[0]=0; for ( i=1; i=s) {pp[i]=pp[i-1]; continue;} for ( j=i-2; j>=0; j-- ) { p1=count(j+1,i); if (p1==-1) break; if (min > p1+pp[j]) min=p1+pp[j]; } if (min>pp[i-1]+500) min=pp[i-1]+500; pp[i]=min; } // for ( i=0; i