Pagini recente » Cod sursa (job #1226502) | Cod sursa (job #153515) | Cod sursa (job #1575468) | Cod sursa (job #3246776) | Cod sursa (job #585736)
Cod sursa(job #585736)
#include<cstdio>
using namespace std;
#define elem (fn - st + 1)
int v[80], n, m;
int ct[31];
int getMiscari(int st, int fn, int pas) {
int i, j, _max, rsp = 0;
for(i = 0; i < pas; ++i) {
_max = 0;
for(j = 1; j <= 30; ++j)
ct[j] = 0;
for(j = st + i; j <= fn; j += pas)
++ct[v[j]];
for(j = 1; j <= 30; ++j)
if(ct[j] > _max)
_max = ct[j];
rsp += elem / pas - _max;
}
return rsp;
}
int main() {
int i, j, st, fn, _max, ax;
char c;
freopen("perb.in", "rt", stdin);
freopen("perb.out", "wt", stdout);
scanf("%d%d", &n, &m);
scanf("%c", &c);
for(i = 1; i <= n; ++i) {
scanf("%c", &c);
v[i] = (int)c - 'A' + 1;
}
for(i = 1; i <= m; ++i) {
scanf("%d%d", &st, &fn);
_max = getMiscari(st, fn, 1);
for(j = 1; j < elem; ++j)
if(elem % j == 0)
if( (ax = getMiscari(st, fn, j)) < _max)
_max = ax;
printf("%d\n", _max);
}
return 0;
}