Cod sursa(job #289157)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 26 martie 2009 15:12:12
Problema Marbles Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
using namespace std;
int  t[100010],i,a,b,op,n,m,nr,tip,sol,j;
struct nod { int inf; nod *adr;};
nod *v[65],*c;
void add(int x,int y)

{ nod *p;

  p=new nod;

  p->inf=y;
  p->adr=v[x];
  v[x]=p;
}

void del (int x, int y)

{ nod *p,*q;
  p=new nod;
  q=new nod;
  p=v[x];

  while(p->inf!=y)
    {q->adr=p; p=p->adr;}
  q->adr=p->adr;
  delete p;
}

int main()
{
ifstream f("marbles.in");
ofstream g("marbles.out");
f>>n>>m;

for(i=1;i<=n;i++)

{ f>>a>>b; add(b,a);
  t[a]=b;
  if(b>tip) tip=b;
}
for(i=1;i<=m;i++)

 { f>>op>>a>>b;

   if(op) { sol=0;  for(j=1;j<=tip;j++)
                     {nr=0;
                     for(c=v[j];c;c=c->adr)
                      if(a<=c->inf&&c->inf<=b) nr++;
                      if(nr>sol) sol=nr;
                     }
             g<<sol<<'\n';
          }
     else { del(t[a],a); add(t[a],a+b); t[a+b]=t[a]; t[a]=0;}
  }
f.close();
g.close();
return 0;
}