Pagini recente » Cod sursa (job #2047415) | Cod sursa (job #551266) | Cod sursa (job #2380385) | Cod sursa (job #1954352) | Cod sursa (job #1709912)
#include <stdio.h>
#include <stdlib.h>
FILE *f,*g;
int a[100001], costuri[100001];
int l,r,q,n;
void citireVector(int n) {
int i;
for(i = 0; i < n; i++){
fscanf(f, "%d", &a[i]);
costuri[i]=0;
}
}
void vectorDeCosturi(int n) {
int i,j;
for(i=0;i<n-1;i++) {
j=i+1;
while(j<n) {
if(a[i]==a[j]) {
costuri[i]=j-i;
break;
}
j++;
}
}
}
int main()
{
int t, n, m, k, i, j, x =1;
f = fopen("pq.in", "r");
g = fopen("pq.out", "w");
if(!f || !g)
{
printf("\nNu merg fisierele");
return -1;
}
fscanf(f,"%d %d",&n, &q);
citireVector(n);
vectorDeCosturi(n);
for(j = 0; j < q; j++) {
fscanf(f,"%d %d",&l,&r);
l--;
r--;
int maxim = 0;
for(i = l; i<=r&&maxim<=r-i; i++)
{
if(costuri[i]>0&&costuri[i]<=(r-i)&&costuri[i]>maxim)
maxim=costuri[i];
}
if(maxim==0)
fprintf(g,"-1\n");
else
fprintf(g,"%d\n",maxim);
}
return 0;
}