Cod sursa(job #1125420)

Utilizator danutbodbodnariuc danut danutbod Data 26 februarie 2014 17:28:16
Problema Fractal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.62 kb
//http://www.infoarena.ro/problema/fractal
#include<iostream>
#include<fstream>

using namespace std;
ifstream f("fractal.in");
ofstream g("fractal.out");
int k,x,y;
int rez(int k,int x,int y)
{
    if(k==1)
    return 0;
    k/=2;
    if(x<=k&&y<=k)
    return rez(k,y,x);
    else
    if(x<=k)
    {
        return k*k+rez(k,x,y-k);
    }
    else
    if(y<=k)
    {
        return k*k*3+rez(k,y-k,2*k-x+1);
    }
    else
    {
        return k*k*2+rez(k,x-k,y-k);
    }
}
int main()
{
    f>>k>>x>>y;
    g<<rez(1<<k,x,y);
    return 0;
}
//#include <iostream>
//using namespace std;
//  int a[100],i,n;
//int main()
//{
//    cout << "Dati n:";
//    cin>>n;
//    a[1]=0;a[2]=1;
//    for(i=3;i<=n;i++)a[i]=a[i-1]+a[i-2];
//    cout<<"termenul n a lui Fibonacci este:"<<a[n];
//    return 0;
//}

//#include <iostream>
//using namespace std;
//  int x,y,rest;
//int main()
//{
//    cout << "Dati doua nr x si y:";
//    cin>>x>>y;
//    do{
//     rest=x%y;
//     x=y;
//     y=rest;
//    }while (rest!=0);
//    cout<<"cmmdc a nr x si y este:"<<x;
//    return 0;
//}

//#include <fstream>
//using namespace std;
//ifstream fi("bete1.in");
//ofstream fo("bete1.out");
//int i,n,a[1003],b[1003],m,s,maxi1,maxi2,t,k;
//int main()
//{
//    fi>>n;
//    for(i=1;i<=n;i++)fi>>a[i];
//    for(i=1;i<=n;i++)fi>>b[i];
//    for(i=1;i<=n;i++)s+=a[i]+b[i];
//    m=s/n;
//    for(i=1;i<=n;i++)
//       if(maxi1<a[i])maxi1=a[i];
//    for(i=1;i<=n;i++)
//       if(maxi2<b[i])maxi2=b[i];
//    for(i=1;i<=n;i++)
//       if(maxi1==a[i])k++;
//    for(i=1;i<=n;i++)
//       if(maxi2==b[i])t++;
//    fo<<m<<endl;
//    fo<<maxi1+maxi2<<endl;
//    if(t<k)fo<<t;
//     else fo<<k;
//    return 0;
//}
////insertie
//#include <iostream>
//#include<cstring>
//using namespace std;
//int i,n,k,a,b,nr;
//int main()
//{
//    cin>>a>>b;
////    for(i=a;i<=b;i++)
////     if(i%2==0)k++;
////    cout<<k;
////    //--------
//    if(a%2==1 && b%2==1)nr=(b-a)/2;
//       else nr=(b-a)/2+1;
//    cout<<endl<<nr;
//    return 0;
//}
////insertie
//#include <fstream>
//using namespace std;
//ifstream  f("sir.in");
//ofstream  g("sir.out");
//int a[100],i,k,aux,n,x,fr[100];
//int main()
//{
////     for(i=1;i<=n;i++){
////        k=i;
////        while(k>1&
////              &a[k-1]>a[k]){
////                          swap(a[k],a[k-1]);
////                          k--;
////                      }
////     }
//    f>>n;
//    for(i=1;i<=n;i++) f>>a[i];
//    for(i=1;i<=n;i++){
//     aux=a[i];
//     k=i;
//     while(k>1&&a[k-1]>aux){a[k]=a[k-1];
//                          k--;
//     }
//     a[k]=aux;
//     }
//    for(i=1;i<=n;i++)g<<a[i]<<" ";
//    return 0;
//}
////selectia directa
//#include <fstream>
//using namespace std;
//ifstream  f("sir.in");
//ofstream  g("sir.out");
//int a[100],i,k,aux,n,x,j,mini;
//int main()
//{
//
//    f>>n;
//    for(i=1;i<=n;i++) f>>a[i];
//    for(i=1;i<=n;i++){
//     mini=a[i];k=i;
//     for(j=i+1;j<=n;j++)
//        if(a[j]<mini){mini=a[j];k=j;}
//     swap(a[i],a[k]);
//     }
//    for(i=1;i<=n;i++)g<<a[i]<<" ";
//    return 0;
//}
//ordonare prin numarare
//#include <fstream>
//using namespace std;
//ifstream  f("sir.in");
//ofstream  g("sir.out");
//int a[100],b[100],k[100],i,aux,n,x,j,mini;
//int main()
//{
//
//    f>>n;
//    for(i=1;i<=n;i++) f>>a[i];
//    for(i=1;i<=n;i++)
//       for(j=i+1;j<=n;j++)
//          if(a[i]>a[j])k[i]++;
//          else k[j]++;
//    for(i=1;i<=n;i++)b[k[i]+1]=a[i];
//    for(i=1;i<=n;i++)g<<b[i]<<" ";
//    return 0;
//}