Advertisement
immuntasir

UVA 11385

Mar 1st, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdio>
  4. using namespace std;
  5. long long int fibonacci[46];
  6. void findFibonaccis() {
  7.     int n;
  8.     fibonacci[0]=1;
  9.     fibonacci[1]=1;
  10.     for (n=2;n<46;n++) fibonacci[n]=fibonacci[n-2]+fibonacci[n-1];
  11. }
  12. int findFibo(long long int array[], int n, int item){
  13.     int i, first, last, middle;
  14.     first = 0;
  15.     last = n - 1;
  16.     middle = (first + last) / 2;
  17.     while( first <= last ){
  18.         if(array[middle] < item) first = middle + 1;
  19.         else if(array[middle] == item) return middle;
  20.         else last = middle - 1;
  21.         middle = (first + last) / 2;
  22.     }
  23.     if(first > last) return -1;
  24. }
  25.  
  26. int main() {
  27.     findFibonaccis();
  28.     int T;
  29.     cin >> T;
  30.     while (T--) {
  31.         int rank[45];
  32.         int N,i,j,k;
  33.         char str[45], ansstr[45];
  34.         cin >> N;
  35.         for(i=0;i<N;i++) cin >> rank[i];
  36.         cin >> str;
  37.         for (i=0;i<N;i++) {
  38.             int position = findFibo(fibonacci, 46, rank[i]);
  39.             printf("%d\n", position);
  40.             if (str[i] >= 'A'&& str[i] <='Z' && position >=0) ansstr[position] = str[i];
  41.             else ansstr[position] = ' ';
  42.         }
  43.         ansstr[i+1]='\0';
  44.         cout << ansstr << endl;
  45.     }
  46.  
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement