#include <iostream>
#include <sstream>
#include <set>
#include <map>
#include <queue>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stdio.h>
#include <string>
using namespace std;
bool cmp(int i, int j) { return i<j; }
vector<double> BatchQueryExecutionTime
(const vector<string>&sqls, const vector<double>×, const vector<string>&keywords) {
vector<double> res;
if(!sqls.size() || !times.size() || !keywords.size())
return res;
vector< map<string, double> > mymaps(sqls.size());
int i = 0;
for(auto &it : sqls) {
string x = it;
stringstream ss(x);
while(ss>>x){
// x.erase(find(begin(x), end(x), '"'));
mymaps[i][x] = times[i];
}
++i;
}
for(auto &it : keywords) {
double sum = 0;
int cnt = 0;
for(auto &my_it : mymaps) {
if(my_it[it]) {
sum += my_it[it];
cnt++;
}
}
if(cnt)
res.push_back(sum/cnt);
else
res.push_back(0);
}
return res;
}
int main(void)
{
#ifdef LOCAL_PROJECT
freopen ("input.txt", "r", stdin);
//freopen("a.out","w",stdout); // console output is better (in most cases)
#else
// add i/o method of specific testing system
#endif
vector<string> sqls;
sqls.push_back(" insert into tableA values (1, \"columnA\", \"columnB\")");
sqls.push_back(" insert into tableB values (2, \"columnA\", \"columnB\", \"columnC\")");
sqls.push_back("select columnA, columnC from tableB");
vector<double> times, res;
times.push_back(2.5);
times.push_back(12.5);
times.push_back(30);
vector<string> keywords;
keywords.push_back("tableB");
keywords.push_back("insert");
keywords.push_back("select");
keywords.push_back("0");
keywords.push_back("table");
keywords.push_back("tableA");
res = BatchQueryExecutionTime(sqls, times, keywords);
for(auto &it : res)
cout<<it<<endl;
return 0;
}