Cod sursa(job #46794)

Utilizator DranaXumAlexandru Dumitru Paunoiu DranaXum Data 2 aprilie 2007 22:57:48
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>



int main()
{
	long x,n,m,a[250000],i,j,poz,zr[250000],q,p,fr[250000];
	FILE *fin,*fout;
    fin=fopen("stramosi.in","r");
    fout=fopen("stramosi.out","w");
    fscanf(fin,"%d%d",&n,&m);
    long z=0;
    a[0]=-1;
    j=x=0;
    for(i=1;i<=n;i++)
    {
		fscanf(fin,"%d",&a[i]);
        if(!a[i]) z++;
        zr[i]=z;
        if(a[i]!=a[i-1])
        {
        //j++;
        x=i;
        }
        fr[i]=x;

    }
    for(i=1;i<=m;i++)
    {
    	fscanf(fin,"%d%d",&q,&p);
        poz=q;
        long pi=fr[poz];
        int ext=0;
        while(p && !ext)
        {
        	poz=fr[poz];
            p--;
            poz--;
            if(poz<=0) ext=1;
        }
        if(ext)
        {
        	fprintf(fout,"0\n");
        }else
        {
            if(zr[pi]==zr[poz])
            	fprintf(fout,"%d\n",fr[poz+1]-1);
            else
            	fprintf(fout,"0\n");
        }
        
    }
    fclose(fin);
    fclose(fout);
    return 0;
}