Cod sursa(job #244623)

Utilizator ok_yvyivanescu ciprian ok_yvy Data 15 ianuarie 2009 17:39:21
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream.h>
#include<string.h>
ifstream f("text.in");
ofstream g("text.out");
int max,n,l,i,j,k,r,poz,cat,nrs,d;
char s[1000],v[100][100],cuv[20];
void main()
{
f>>max;
f.get();
f.get(s,1000);
f.get();
while(!f.eof())
{
if(strlen(s)<=max)
g<<s;
else
{
n=0;
j=0;
for(i=0;i<strlen(s);i++)
if(s[i]!=' ')
{
j++;
cuv[j]=s[i];}
else
{
j++;
cuv[j]=0;
if(j>0)
{
n++;
strcpy(v[n],cuv);
}
j=-1;
}
l=0;
poz=1;
i=1;
nrs=0;
do{l=0;
poz=i;
nrs=0;
while((l+strlen(v[i])<=max)&&(i<=n))
{
l=l+strlen(v[i]);
i++;
if(l<max)
{l++;
nrs++;
}}
if((l<max)&&(i>n))
{for(j=poz;j<n;j++)
g<<v[j]<<" ";
g<<v[n]<<endl;}
else
if((l==max)&&(nrs==i-poz))
{
g<<v[poz]<<"  ";
for(j=poz+1;j<=i-2;j++)
g<<v[j]<<" ";
g<<v[i-1]<<endl;
poz=i;
}
else
if(l==max)
{
for(j=poz;j<i-1;j++)
g<<v[j]<<" ";
g<<v[i-1]<<endl;

}
else
{
l--;
d=max-l;
cat=d/(i-poz);
r=d%i-poz;
for(j=poz;j<poz+r;j++)
{
g<<v[j];
for(k=1;k<=cat+2;k++)
g<<" ";
}
for(j=poz+r;j<=i-2;j++)
{g<<v[j];
for(k=1;k<=cat+1;k++)
g<<" ";
}
g<<v[i-1]<<endl;
poz=i;} }
while(i<=n);
}
f.get(s,1000);
f.get();
}
f.close();
g.close();
}