Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define N 1001
- #define M 10001
- using namespace std;
- ifstream fin("date.in");
- ofstream fout("date.out");
- char s[M], cuv[101][N],*p;
- short int a[101][N],b[101][N];
- int L,ct,n, S;
- int maxi;
- void Pcta()
- {
- fin>>L;
- fin.get();
- fin.getline(s, M);
- p=strtok(s," ");
- strcpy(cuv[ct],"");
- while(p)
- {
- n=strlen(p);
- if(S+n+1<=L)
- {
- strcat(cuv[ct],p);
- strcat(cuv[ct]," ");
- S+=n+1;
- }
- else
- {
- ct++;
- strcat(cuv[ct],p);
- strcat(cuv[ct]," ");
- S=n+1;
- }
- p=strtok(0," ");
- }
- for(int i=0; i<=ct; i++)
- fout<<cuv[i]<<"\n";
- fout<<'\n';
- }
- void Pctb()
- {
- int ok=0;
- for(int i=0; i<=ct && !ok; i++)
- for(int j=0; cuv[i][j] && !ok; j++)
- if(cuv[i][j]==' ' && (cuv[i+1][j]==' '||cuv[i+1][j-1]==' '|| cuv[i+1][j+1]==' '))
- ok=1;
- if(ok==1) fout<<"DA\n" ;
- else fout<<"NU\n";
- }
- ///Fill
- void Fill(int i, int j ,int k)
- {
- if(i>ct)return;
- if(a[i][j]==0)
- {
- a[i][j]=k;
- if(maxi<k) maxi=k;
- ///autoapel
- if(j>=0)Fill(i+1,j-1,k+1);
- Fill(i+1,j,k+1);
- if(j<strlen(cuv[i+1]))Fill(i+1,j+1,k+1);
- }
- }
- void Copie(short int a[][N], short int b[][N])
- {
- for(int i=0;i<=ct;i++)
- for(int j=0;cuv[i][j];j++)
- a[i][j]=b[i][j];
- }
- void Pctc()
- {
- ///matricea
- for(int i=0;i<=ct;i++)
- for(int j=0;cuv[i][j];j++)
- if(cuv[i][j]==' ')a[i][j]=b[i][j]=0;
- else a[i][j]=b[i][j]=1;
- for(int i=0;i<=ct;i++)
- for(int j=0;cuv[i][j];j++)
- if(a[i][j]==0)
- {
- int k=1;
- Fill(i,j,k);
- Copie(a,b);
- }
- fout<<maxi;
- }
- int main()
- {
- Pcta();
- Pctb();
- Pctc();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement