SuitNdtie

Dictionary

Apr 22nd, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<algorithm>
  4. #include<vector>
  5. using namespace std;
  6.  
  7. int veccmp(vector<char> a , vector<char> b){
  8.     int i = 0;
  9.     while(i < 9 && a[i] == b[i]){
  10.         i++;
  11.     }
  12.     if(i == 9)return 0;
  13.     return (a[i] > b[i] ? 1 : -1);
  14. }
  15.  
  16. int main()
  17. {
  18.     char str[10] = {"abcdefghi"};
  19.     vector<char> vec;
  20.     for(int i = 0 ; i < strlen(str) ; i ++){
  21.         vec.push_back(str[i]);
  22.     }
  23.     vector< pair <vector <char> ,int> > vect;
  24.     int page = 1;
  25.     do{
  26.         vect.push_back({vec,page});
  27.         page++;
  28.     }while(next_permutation(vec.begin(),vec.end()));
  29.     int n;
  30.     scanf("%d",&n);
  31.     for(int i = 0 ; i < n ; i ++){
  32.         scanf("%s",str);
  33.         vector<char> newstr;
  34.         for(int j = 0 ; j < 10 ; j ++)newstr.push_back(str[j]);
  35.         int l = 0 , r = vect.size() - 1;
  36.         while(l <= r){
  37.             int m = (l+r)/2;
  38.             int result = veccmp(newstr,vect[m].first);
  39.             if(result == 1){
  40.                 l = m + 1;
  41.             }
  42.             else if(result == -1){
  43.                 r = m - 1;
  44.             }
  45.             else{
  46.                 printf("%d\n",vect[m].second);
  47.                 break;
  48.             }
  49.         }
  50.     }
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment