Breed Counting S
题目描述:armer John 的 N 头奶牛,从左到右编号为 1…N,排成一队。所有牛都可以分为三个品种,每头牛都有一个品种编号(只能为 1,2,3 中的一个)。FJ 有 Q 个询问,每个询问希望求出某个区间内每个品种奶牛的数量。
#include <bits/stdc++.h>
using namespace std;
struct cow
{
int s1, s2, s3;
} x[100001];
int main()
{
int n, q, a, b;
int pz;
scanf("%d%d", &n, &q);
x[0].s1 = x[0].s2 = x[0].s3 = 0;
for (int i = 1; i <= n; i++)
{
scanf("%d", &pz);
int pz1 = 0, pz2 = 0, pz3 = 0;
if (pz == 1)
pz1 = 1;
else if (pz == 2)
pz2 = 1;
else
pz3 = 1;
x[i].s1 = x[i - 1].s1 + pz1;
x[i].s2 = x[i - 1].s2 + pz2;
x[i].s3 = x[i - 1].s3 + pz3;
}
while (q--)
{
scanf("%d%d", &a, &b);
int c1, c2, c3;
c1 = x[b].s1 - x[a - 1].s1;
c2 = x[b].s2 - x[a - 1].s2;
c3 = x[b].s3 - x[a - 1].s3;
printf("%d %d %d\n", c1, c2, c3);
}
return 0;
}
