clanmasr2's blog

By clanmasr2, history, 8 years ago, In English

I've tried to figure out the reason for RTE on test case 2 but no way I got stuck. Please, if any coach can submit the solution to tell me which test case gives RTE or if anyone can offer help it will be appreciated.



#include<bits/stdc++.h> using namespace std; vector <int> arr[30]; vector <bool> ans; int main() { freopen("mahdi.in", "r", stdin); int t, len, mult, add, n, fir; char fir1; cin>>t; for(int tt=1;tt<=t;tt++) { ans.erase(ans.begin(), ans.end()); for(int i=0;i<26;i++)arr[i].erase(arr[i].begin(), arr[i].end()); cin>>fir1>>len>>mult>>add; fir = (fir1 - 97) % 26; arr[fir].push_back(0); for(int i=1; i<len; i++) { fir = (fir * mult + i * add) % 26; arr[fir].push_back(i); } cin>>n; while(n--) { cin>>fir1>>len>>mult>>add; //if(fir1 < 97)cout<<"dog"; fir = (fir1 - 97) % 26; bool check = 1; int pos = -1; if(arr[fir].size()) { pos = arr[fir][0]; } if(pos !=-1) { for(int i=1; i<len; i++) { check = 0; fir = (fir * mult + i * add) % 26; int s = 0, e = arr[fir].size(), mid; if(!e) break; while(s < e) { mid = s + (e-s-1)/2; if(pos <= arr[fir][mid]) { e = mid; } else if(pos > arr[fir][mid]) { s = mid+1; } } if(arr[fir][s] > pos) { pos = arr[fir][s];check=1; } /*for(int j=0; j<arr[fir].size(); j++) { if(arr[fir][j] > pos) { check = 1; pos = arr[fir][j]; break; } }*/ if(!check)break; } } if(pos == -1 || !check) ans.push_back(0); else ans.push_back(1); } cout << "Case " << tt << ":\n"; for(int i=0;i<ans.size();i++) { if(ans[i]) cout<<"BRAVO\n"; else cout<<"REPEAT\n"; } } return 0; }

Thanks in advance

  • Vote: I like it
  • -3
  • Vote: I do not like it