Pagini recente » Cod sursa (job #2922750) | Cod sursa (job #1120308) | Cod sursa (job #1644822) | Cod sursa (job #1314393) | Cod sursa (job #2634508)
#include <bits/stdc++.h>
#define ll long long
#define MAXX 20001
using namespace std;
ifstream fin("text4.in");
ofstream fout("text4.out");
vector <string> paragraph[3000];
void divideIntoWords(string s, int index) {
int start = -1;
for (int i = 0; i <= s.size(); i++)
if (start < 0 && s[i] != ' ')
start = i;
else if (start >= 0 && (s[i] == ' ' || i == s.size())) {
paragraph[index].push_back(s.substr(start, i - start));
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 < paragraph[i].size(); j++)
if ((currentLength + paragraph[i][j].size() + (j - startPosition)) <= lineSize)
currentLength += paragraph[i][j].size();
else {
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 = paragraph[i][j].size();
}
for (int j = startPosition; j < paragraph[i].size(); j++)
fout << paragraph[i][j]<< " ";
fout << "\n";
}
return 0;
}