Cod sursa(job #1580881)
| Utilizator | Data | 26 ianuarie 2016 11:31:53 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <fstream>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
const int nmax=100000000;
int v[nmax+1];
int main () {
int n;
fin>>n;
int n2;
for (n2 =1; n2<=n; n2*=2 ) {
}
n2/=2;
for (int i=1; i<=n; i++) {
fin>>v[i];
}
for (int i=1; i<=n; i++) {
int j=i;
while (j>=2 && v[j]<v[j-1]) {
int a=v[j-1];
v[j-1]=v[j];
v[j]=a;
}
}
int sol=0;
for (int step=n2; step>0; step/=2) {
if (sol+step<=n && v[sol+step]<=n-1) {
sol+=step;
}
}
fout<<sol<<"\n";
return 0;
}
