您的位置:首页 > 编程语言 > Go语言

Codeforces Round #215 (Div. 2) C. Sereja and Algorithm

2013-11-28 22:47 453 查看
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

int main(){
string s ;
cin >>s;
int m;
cin >>m;
vector<int> l(m),r(m);
for(int i = 0 ; i < m ; ++ i )
cin >> l[i]>>r[i];

int n = s.length();
vector<int> x(n+1,0),y(n+1,0),z(n+1,0);
for(int i = 0; i < n; ++ i){
x[i+1] =x[i];
y[i+1] = y[i];
z[i+1] = z[i];
if(s[i] == 'x')  x[i+1]++;
else if(s[i] == 'y') y[i+1]++;
else z[i+1]++;
}

for(int i = 0 ; i < m ; ++ i){
if(r[i]-l[i]+1 < 3) cout<<"YES"<<endl;
else{
vector<int> num(3,0);
num[0] = x[r[i]]-x[l[i]-1];
num[1] = y[r[i]]-y[l[i]-1];
num[2] = z[r[i]]-z[l[i]-1];
sort(num.begin(),num.end());
if((num[0] == num[1] && num[1] == num[2])||
(num[2]-num[1] == 1 && num[1] == num[0]) ||
(num[2]-num[1] == 0 && num[1] - num[0] == 1))
cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: