Cod sursa(job #883753)

Utilizator Detrol2kGuianu Leon Detrol2k Data 20 februarie 2013 12:44:48
Problema Farfurii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;

int unu, doi, p, n, sol, li, ls, mid; 

bool ok(int t)
{
	int i, s;
	float n1, n2;
	
	n1 = n2 = 0;
	for(i=1; i<=p; i++)
	{
		s = t/i;
		n2 = n2+(s/2);
		n1 = n1+(s%2);
	}
	return ((n2>=doi) && ((n1+2.0*(n2-doi))>=unu));
}

int main()
{
	ifstream fin("proc.in");
	ofstream fout("proc.out");
	
	//Read
	fin>>n>>unu>>p;
	doi = n-unu;


	//Compute
	li = 0; ls = 2*n;
	sol = ls;
	while(li <= ls)
	{
		mid = (li+ls)/2;
		if(ok(mid))
		{
			sol = mid;
			ls = mid-1;
		}
		else
			li = mid+1;
	}
	
	
	//Print
	fout<<sol;
	//cout<<sol;
}