Buna ziua !
Am dat peste problema
http://infoarena.ro/problema/inundatie Am facut urmatorul program :
#include<cstdio>
using namespace std;
long int a[90001],i,j,s,d,ok=0,m,x,n,m1,q,aux,s1;
int main()
{FILE*f=fopen("inundatie.in","r");
FILE*g=fopen("inundatie.out","w");
fscanf(f,"%ld %ld",&n,&m1);
n=n*m1;
for(i=1; i<=n; i++)
fscanf(f,"%ld",&a[i]);
for(i=1; i<=n; i++)
for(j=i+1; j<=n; j++)
if(a[i]>a[j]){
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
fscanf(f,"%ld",&q);
for(i=1; i<=q; i++){
s1=0;
ok=0;
fscanf(f,"%ld",&x);
x--;
s=1;
d=n;
while(ok==0){
m=(s+d)/2;
if(x>a[m])
s=m+1;
if(x<a[m])
d=m-1;
if((x>=a[m] && x<a[m+1]) || x==a[m])
ok=1;
}
for(j=1; j<=m; j++)
s1=s1+a[j];
s1=s1+(x*(n-m));
fprintf(g,"%ld\n",s1);
}
}
pe 9 din 10 teste este depasita limita de timp. Ma puteti ajuta va rog?
Multumesc!