Cod sursa(job #1429274)

Utilizator asavoaeigeoAsavoaei Georgiana asavoaeigeo Data 5 mai 2015 23:03:17
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
#include <algorithm>
using namespace std;
int v[1005],n;
int loto[7];
int cautare(int x)
{
    int s=1,d=n,mij;
    if(x>v[n]) return v[n];
    if(x<v[1]) return v[1];
    while(s<=d)
    {
        mij=(s+d)/2;
        if(x>v[mij]&&x<v[mij+1])
        {
            int a=x-v[mij],b=v[mij+1]-x;
            if(a==b) return v[mij+1];
            else if(a>b) return v[mij+1];
            else return v[mij];
        }
        else if(v[mij-1]<x&&x<v[mij])
        {
            int a=x-v[mij-1],b=v[mij]-x;
            if(a==b) return v[mij];
            else if(a>b) return v[mij];
            else return v[mij-1];
        }
        else if(x<v[mij]) d=mij-1;       
        else s=mij+1;               
    }
}
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int i;
    scanf("%d",&n);
    for(i=1;i<=n;i++) scanf("%d",&v[i]);
    for(i=1;i<=6;i++) scanf("%d",&loto[i]);
    sort(loto+1,loto+7);
    sort(v+1,v+1+n);
    for(i=1;i<=6;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(v[j]==loto[i]) {while(j<n) v[j]=v[j+1],j++;n--;}
        }
    }
    loto[1]=cautare(loto[1]);
    for(i=1;i<=n;i++)
    {
        if(v[i]==loto[1]) while(i<n) v[i]=v[i+1],i++;
    }
    n--;
    loto[6]=cautare(loto[6]);
    sort(loto+1,loto+7);
    for(i=1;i<=6;i++) printf("%d ", loto[i]); 
}