Submission #343200

#TimeUsernameProblemLanguageResultExecution timeMemory
343200Parsa_PGSelling RNA Strands (JOI16_selling_rna)C++14
60 / 100
1571 ms25324 KiB
/* Rastegary Az Shoroe Ye EDAST */ #include <bits/stdc++.h> #define pb push_back #define endl "\n" #define ll long long using namespace std; const int maxn = 1e5 + 10 , Maxn = 1e5 + 10, lg = 22; const int mod = 22777; const ll inf = 1e18 + 10; string s[maxn] , p[maxn] , q[maxn]; int32_t main(){ ios:: sync_with_stdio(0), cin.tie(0), cout.tie(0); int n , m; cin >> n >> m; for(int i = 0 ; i < n ; i++) cin >> s[i]; for(int i = 0 ; i < m ; i++){ cin >> p[i] >> q[i]; reverse(q[i].begin() , q[i].end()); } int l1[maxn] , r1[maxn]; sort(s , s+n); vector<pair<string , int>>v; for(int i = 0 ; i < m ; i++){ l1[i] = lower_bound(s , s + n , p[i]) - s; p[i][p[i].size() - 1]++; r1[i] = lower_bound(s , s + n , p[i]) - s; } for(int i = 0 ; i < n ; i++){ reverse(s[i].begin() , s[i].end()); v.pb({s[i] , i}); } sort(v.begin() , v.end()); int in[maxn]; in[n] = -1; for(int i = 0 ; i < n ; i ++) s[i] = v[i].first , in[v[i].second] = i; int l2[maxn] , r2[maxn]; for(int i = 0 ; i < m ; i++){ l2[i] = lower_bound(s , s + n , q[i]) - s; q[i][q[i].size() - 1]++; r2[i] = lower_bound(s , s + n , q[i]) - s; } for(int i = 0 ; i < m ; i++){ int ans = 0; for(int j = l1[i] ; j < r1[i] ; j++) if(l2[i] <= in[j] && in[j] < r2[i]) ans++; cout << ans << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...