👤

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.

Răspuns :

#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;

}

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!


En Studentsy: Alte intrebari