Cod sursa(job #125179)

Utilizator bacerandreiBacer Andrei bacerandrei Data 20 ianuarie 2008 11:52:52
Problema Gardieni Scor 40
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 10-a Marime 0.75 kb
#include<fstream.h>
long long a[50005],b[50005],c[50005],uz[1000000],n,t,i,j,k,s;

void quik(int p,int q)
{
  long long aux,i,j,t;
   if(p<q)
    {
     i=p;
     j=q;
     t=1;
      do
       {
	if(c[i]>c[j])
	 {
	  aux=c[i];c[i]=c[j];c[j]=aux;
	  aux=a[i];a[i]=a[j];a[j]=aux;
	  aux=b[i];b[i]=b[j];b[j]=aux;
	  t=!t;
	 }
	if(t)
	 j--;
	else
	 i++;
      }while(i!=j);
    quik(p,i-1);
    quik(i+1,q);
   }
}

int main()
{
  ifstream f("gardieni.in");
  ofstream g("gardieni.out");
   f>>n>>t;
    for(i=1;i<=n;i++)
     f>>a[i]>>b[i]>>c[i];
   quik(1,n);
   i=1;
    while(k<t)
     {
      for(j=a[i];j<=b[i];j++)
       if(uz[j]==0)
	{
	 k++;
	 uz[j]=1;
	 s+=c[i];
	}
       i++;
      }
    g<<s;
  return 0;
}