ulvis.paste.net

Paste Search Dynamic
Recent pastes
getline
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int main() {
  6.         int n;
  7.         cin>>n;
  8.         string a,b;
  9.         cin>>a;
  10.         cin>>b;
  11.         // getline(cin,b);
  12.         map<char,vector<int> >mp;
  13.         for(int i=0;i<n;i++)
  14.         {
  15.                 mp[b[i]].push_back(i+1);
  16.         }
  17.         int c=0;
  18.         vector<pair<int,int> >ans;
  19.         for(int i=0;i<n;i++)
  20.         {
  21.                 if(mp.find(a[i])==mp.end() and mp.find('?')!=mp.end())
  22.                 {
  23.                         if(mp.find('?')==mp.end()) continue;
  24.                         int x=mp['?'].size();
  25.                         ans.push_back(make_pair(i+1,mp['?'][x-1]));
  26. //                      cout<<<<" "<<i+1<<endl;
  27.                         mp['?'].pop_back();
  28.                         if(x==1) mp.erase('?');
  29.                         c++;
  30.                 }
  31.                 else if(mp.find(a[i])!=mp.end())
  32.                 {
  33.                         int x=mp[a[i]].size();
  34.                         ans.push_back(make_pair(i+1,mp[a[i]][x-1]));
  35. //                      cout<<mp[b[i]][x-1]<<" "<<i+1<<endl;
  36.                         mp[a[i]].pop_back();
  37.                         if(x==1) mp.erase(a[i]);
  38.                         c++;
  39.                 }
  40.  
  41.         }
  42.         cout<<c<<endl;
  43.                 for(auto &it : ans)
  44.                 {
  45.                         cout<<it.first<<" "<<it.second<<endl;
  46.                 }
  47.         return 0;
  48. }
Parsed in 0.009 seconds