Cod sursa(job #934869)

Utilizator dariusdariusMarian Darius dariusdarius Data 31 martie 2013 19:51:13
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>
int st[1000005];
int dr[1000005];
int main()
{
	FILE *f,*g;
	int i,n,a1,a2,Q;
	f=fopen("bitone.in","r");
	fscanf(f,"%d",&n);fgetc(f);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&st[i]);
	dr[n]=n;
	for(i=n-1;i>=1;i--)
		if(st[i]<=st[i+1])
			dr[i]=dr[i+1];
		else 
			dr[i]=i;
	//calculam st:
	a1=st[1];st[1]=1;
	for(i=2;i<=n;i++)
	{
		a2=st[i];
		if(a1>=a2)
			st[i]=st[i-1];
		else 
			st[i]=i;
		a1=a2;
	}
	/*
	for(int i=1;i<=n;i++)
		printf("%d ",st[i]);
	printf("\n");
	for(int i=1;i<=n;i++)
		printf("%d ",dr[i]);
	printf("\n");
	*/
	g=fopen("bitone.out","w");
	fscanf(f,"%d",&Q);
	for(i=1;i<=Q;i++)
	{
		fscanf(f,"%d%d",&a1,&a2);
		if(st[a2]<=dr[a1])
			fputc('1',g);
		else fputc('0',g);
	}
	fputc('\n',g);	
	return 0;
}