Fotos de Relíquias
Problem LinkSolution by TioPatinhas — 100 pts
Code / Notes
#include <bits/stdc++.h>
using namespace std;
int main() {
long long N;
cin >> N;
vector<int>A;
vector<long long>S;
long long cont = 0;
for (long long i = 0; i < N; i++) { // primeiro for
int Ai;
cin >> Ai;
A.push_back(Ai);
}
for (long long i = 0; i < N; i++) { // segundo for
if (A[i] == 0) {
cont++;
} else if (A[i] == 1) {
S.push_back(cont);
cont = 0;
}
} S.push_back(cont);
long long ans = 0;
long long limit = S.size();
for (long long i = 0; i < limit-1; i++) {
long long Ri = (S[i] + 1)*(S[i+1] + 1);
ans = ans + Ri;
}
cout << ans;
}
//Observe que é necessário usar o long long, por causa das restrições, é até dito no problema Duh
//Errei muita besteira por causa do long long
//Anotação 1: O S.size() não é um int, ele é muito próximo disso, só por precaução, eu criei um int e igualei a
//seu valor, pra não dar erro.
//Anotação 2: Eu usei o for (auto x : A) no segundo for (de cima para baixo), isso é um erro crasso, por causa
//do maldito long long, já que o i varia de 0 até N, um valor exorbitante
//Anotação 3: O long long é um bits 64 (pesquisei) e cobre os valores até 9 quintilhões (9*10^18), enquanto o
// int é um bits 32, só cobre até 2 bilhões (2*10^9)
//Anotação 4: Não esqueça de colocar o S.push_back() no final, depois do segundo for, se não ele não contará
//os zeros depois do último um, visto que ele só usa o S.push_back depois que identifica o um. Logo, coloque
//um 1 no vector A, ou use o S,push_back depois do for!!
Last updated 1 month, 4 weeks ago