Pagini recente » Cod sursa (job #3188159) | Cod sursa (job #452093) | Cod sursa (job #2514418) | Cod sursa (job #2417880) | Cod sursa (job #3260803)
#include <bits/stdc++.h>
using namespace std;
int n,x,k,c[100001];
int piramideStart = 3,piramideNr = 1, piramideCheck=-1, xIndex;
vector<int> vals(100001, -1);
int maxNr=-1;
ofstream out("piramide.out");
ifstream in("piramide.in");
int check(int piramideCheck, int piramideStart, int piramideNr) {
int r = 0;
for(int i = 0;i<k;i++) {
if(c[i] > piramideStart) break;
if(c[i] > piramideCheck && c[i] <= piramideStart) r++;
}
vals[piramideNr] = r;
}
int main() {
in >> n >> x >> k;
for(int i = 0;i<k;i++) in >> c[i];
while(piramideStart < n) {
piramideNr++;
piramideCheck = piramideStart;
piramideStart += (piramideNr+1)*(piramideNr+2)/2;
if(x > piramideCheck && x <= piramideStart) xIndex = piramideNr;
check(piramideCheck,piramideStart,piramideNr);
}
piramideStart-=(piramideNr+1)*(piramideNr+2)/2;
piramideNr-=1;
if(xIndex > piramideNr) xIndex = 0;
out << xIndex << "\n" << piramideNr << "\n" << n - piramideStart << "\n";
for(int i = 0;i<=piramideNr;i++) {
if(maxNr < vals[i]) maxNr = vals[i];
}
for(int i = 0;i<=piramideNr;i++) {
if(maxNr == vals[i]) {
out << i;
return 0;
}
}
return 0;
}