Pagini recente » Cod sursa (job #314062) | Cod sursa (job #73099) | Cod sursa (job #2030443) | Cod sursa (job #1673271) | Cod sursa (job #2634475)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("text4.in");
ofstream fout("text4.out");
vector <string> paragraph[2000];
void addWord(int start, int end, string s, int index) {
string newS;
for (int i = start; i < end; i++)
newS += s[i];
paragraph[index].push_back(newS);
}
void divideIntoWords(string s, int index) {
int start = -1;
for (int i = 0; i <= (int) s.size(); i++)
if (start < 0 && isalpha(s[i]))
start = i;
else if (start >= 0 && (s[i] == ' ' || i == (int) s.size())) {
addWord(start, i, s, index);
start = -1;
}
}
int main() {
int lineSize;
string s;
int size = 0;
fin >> lineSize; fin.get();
while (getline(fin, s))
divideIntoWords(s, ++size);
for (int i = 1; i <= size; i++) {
int startPosition = 0, currentLength = paragraph[i][0].size();
for (int j = 1; j < (int) paragraph[i].size(); j++)
if ((currentLength + (int) paragraph[i][j].size() + (j - startPosition)) <= lineSize)
currentLength += (int) paragraph[i][j].size();
else {
/* if (j - 1 - startPosition == 0) {
fout << paragraph[i][startPosition] << "\n";
startPosition = j;
currentLength = (int) paragraph[i][j].size();
continue;
}*/
int numOfparagraph = j - 1 - startPosition;
int numOfSpace = (lineSize - currentLength) / numOfparagraph;
int rem = (lineSize - currentLength) % numOfparagraph;
for (int k = startPosition; k < j; k++) {
fout << paragraph[i][k];
if (k < j - 1) {
for (int k = 1; k <= numOfSpace; k++)
fout << ' ';
if (rem > 0) {
fout << ' ';
rem--;
}
}
}
fout << '\n';
startPosition = j;
currentLength = (int) paragraph[i][j].size();
}
for (int j = startPosition; j < (int) paragraph[i].size(); j++)
fout << paragraph[i][j] << " ";
fout << "\n";
}
return 0;
}