Cod sursa(job #1056041)

Utilizator andrei_vs2009Cozma Andrei andrei_vs2009 Data 14 decembrie 2013 12:25:18
Problema Progresie Scor 0
Compilator cpp Status done
Runda ONIS 2014, Runda 1 Marime 1.09 kb
#include<fstream>
#include<iostream>
using namespace std;


int T,N[11];
long R[11],v[640],valMin[11];;

void citire()
{
	ifstream fin("progresie.in");
	fin>>T;
	for(int i=1;i<=T;i++)
		fin>>N[i]>>R[i];
	fin.close();
}

int apartine(long val)
{
	int i=1;
	while(v[i])
	{
		if(v[i]==val)
			return 1;
		i++;
	}
	return 0;
}

void creare()
{
	int i,pas=0,j,nr=1;
	i= 1;
	while(i<1500)
		{
			
			pas++;
			j=pas;
			while(j)
			{
				v[nr++]=i;
				j--;
				i++;
			}
			
			i = i + pas;
		}
}

void calcul()
{
	int i,k,j,ok,ok2;
	for(j=1;j<=T;j++)
	{
		k=1;
		ok2=0;
		while(v[k])
		{
			ok = 1;
			for(i=1;i<N[j]&&ok;i++)
			{
				if(!apartine(v[k]+ i * R[j]))
						ok=0;
			}
			if(ok) {ok2=1;valMin[j] = v[k];break;}
			k++;
		}
		if(ok2==0) valMin[j]=-1;
	}
}

void afisare()
{
	int i;
	ofstream fout("progresie.out");
	for (i=1;i<=T;i++)
		fout<<valMin[i]<<endl;
	
	fout<<endl;
	fout.close();
}

int main()
{
	//cout<<1;
	citire();
	//cout<<2;
	creare(); 
	calcul();
	//cout<<3;
	afisare();
	//cout<<4;
	return 0;
}