TBD Genç soru 12 çözümüm

TBD Genç şubat ayı ödüllü programlama sorusu çözümüm
soruya ulaşmak için
http://www.tbdgenc.com/2011/02/subat-2011-bulteni-ve-odullu-programlama-sorusu/
#include<iostream>
using namespace std;

int arayasokma(int A[],int uzunluk)
{
    int i,k,ekle;
    for (i=1;i<uzunluk;i++)
    {
        ekle=A[i];
        for (k=i-1;k>=0 && ekle<=A[k];k--)
        {
            A[k+1]=A[k];
        }
        A[k+1]=ekle;
    }
}

int main()
{
    int A, N;
    cin>>A;
    cin>>N;
    float durumsayisi=(N*(N-1))/2; // durumsayisi kadar farkli 2 li olusturulabilir
    float pay=0;
    int uzaklik[N];
    int parcalar[3]; // herhangi iki farkli dugum acildiginde 3 parca olusur
    for (int i=0;i<N;i++) // girilen degerler birbirinden farkli olmali
    {
        cin>>uzaklik[i];
    }
    arayasokma(uzaklik,N);
    for (int i=0;i<N;i++)
    {
        for (int j=i+1;j<N;j++)
        {
            parcalar[0]=uzaklik[i];
            parcalar[1]=uzaklik[j]-uzaklik[i];
            parcalar[2]=100-uzaklik[j];
            if ((parcalar[0]>=A) || (parcalar[1]>=A) || (parcalar[2]>=A))
                pay++;
        }
    }
    cout<<pay/durumsayisi;
    return 0;
}

Hiç yorum yok:

Yorum Gönder