Fie un vector cu 2*n elemente numere naturale. Din vector sunt sterse pe rand elemente din k in k pozitii. Numararea pozitiilor se va face cu revenire la prima in cazul in care indicele curent este mai mare decat n.Operatia se repeta de n ori. Determinati pozitia de inceput a numaratorii astfel incat elementele ramase in vector sa aiba suma maxima. Se va afisa pozitia de inceput a numaratorii si suma elementelor ramase in vector. Exemplu pentru n=3 si k=3 si vectorul A=( 3,10,15,4,2,10) se va afisa 2 , Suma=35. s-au sters elementele de pe pozitiile 4,1,5.
CinevaFaraNume:
Pe exemplul tau trebuie sa afiseze indicele 4 si suma 35.
Răspunsuri la întrebare
Răspuns de
0
#include <iostream>
using namespace std;
int vec[10001];
bool sters[10001];
int mod(int a,int b){
return (a % b + b) % b;
}
int main(){
int n,k;
cin >> n >> k;
for(int i = 1; i <= 2*n; i++){
cin >> vec[i];
}
int ind = 1;
int veclen = 2*n;
for(int i = 0; i < n; i++){
sters[ind] = true;
ind += k;
if(ind > veclen) ind %= (veclen);
while(sters[ind]){ind++;if(ind > veclen) ind %= veclen;}
}
int smax = 0, s, indmax = -1;
for(ind = 1; ind <= veclen; ind++){
s = 0;
for(int i = 1; i <= veclen; i++){
if(!sters[mod(i - ind, veclen)+1]) s += vec[i];
}
if(s > smax){
smax = s;
indmax = ind;
}
}
cout << indmax << ' ' << smax;
}
Alte întrebări interesante
Studii sociale,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă