Pagini recente » Cod sursa (job #1188791) | Cod sursa (job #623849) | Cod sursa (job #2096359) | Cod sursa (job #578843) | Cod sursa (job #455912)
Cod sursa(job #455912)
#include<vector>
#include<fstream.h>
#include<algorithm>
using namespace std;
vector<long> s;
long n;
int next(int poz)
{
while(s[poz]==s[poz+1] && poz<n-1)
poz++;
poz++;
if(s[poz]==s[poz-1] || poz>n-1)
return -1;
return poz;
} // se retine poz intr-un aux apoi verifcam daca e la sf sau merge next
int main()
{
long i, j, v[5001], poz=0, si=0, p, da, sol=0, func=1;
ifstream f("secv.in");
f>>n;
for(i=1; i<=n; ++i)
{
f>>v[i];
s.push_back(v[i]);
}
sort(s.begin(), s.end());
ofstream g("secv.out");
while(func)
{
func=0;
poz=0;
for(j=si+1; j<=n; ++j)
if(v[j]==s[poz])
{
si=j;
p=j;
func=1;
break;
}
while(1)
{
da=1;
poz=next(poz);
if(poz==-1)
{
if(sol==-1 || p-si+1<sol || sol==0)
sol=p-si+1;
break;
}
for(i=p+1; i<=n && da; ++i)
if(v[i]==s[poz])
{
da=0;
p=i;
}
if(da==1)
{
if(sol==0)
sol=-1;
break;
}
}
}
g<<sol;
g.close();
return 0;
}