Problema Pbinfo DistLungMax #2738
Iau 20 de puncte pe sursa mea... Primeste punctele doar pe cazul in care nici un cuvant nu are toate literele distincte, desi mie imi merge orice exemplu.. nu merge nici pe exemplu pe evaluatorul de pe Pbinfo.. stie cineva de ce?? si poate cineva sa imi dea sursa de 100?
Asta e sursa:
#include
#include
using namespace std;
int v[26];
char s[256];
int k = 0, maxim = -1, indice = -1;
int cnt_mom = 0, sm = 0;
int main()
{
cin.getline(s, 256);
for(int i = 0; s[i]; ++i)
{
if(s[i] == 32)
{
int ok = 1, cnt = 0;
for(int j = 1; j <= 26; ++j)
{
if(v[j] > 1)
{
ok = 0;
break;
}
if(v[j] == 1)
cnt++;
}
if(ok)
{
if(cnt > maxim)
{
maxim = cnt;
indice = k;
}
}
for(int j = 1; j <= 26; ++j)
v[j] = 0;
k++;
}
else
{
v[s[i] - 96]++;
}
}
if(indice == -1)
{
cout << indice;
return 0;
}
for(int i = 0; s[i]; ++i)
{
sm++;
if(s[i] == 32)
{
cnt_mom++;
sm = 0;
}
if(cnt_mom == indice && sm != 0)
cout << s[i];
}
return 0;
}
Răspunsuri la întrebare
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("distlungmax.in");
char s[255];
short n, i, j, lcuv, lmax, ind, distincte=1, frlit[26], exista;
int main()
{
f.getline(s, 255);
n=strlen(s);
s[n]=' '; ++n; s[n]=0;
i=0;
while (i<n)
{
if (s[i]!=' ')
{
++lcuv;
j=s[i]-'a';
++frlit[j];
if (frlit[j]>1) distincte=0;
}
else
{
if (distincte)
{
exista=1;
if (lcuv>lmax)
{
lmax=lcuv; ind=i-lmax;
}
}
lcuv=0; distincte=1;
for (j=0; j<26; ++j)
frlit[j]=0;
}
++i;
}
if (exista)
{
for (i=ind; i<ind+lmax; ++i )
cout << s[i];
}
else cout << -1;
}