Cod sursa(job #592340)

Utilizator tiganu_dolarMancea Catalin tiganu_dolar Data 27 mai 2011 21:19:49
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;

#define maxim(a,b) (a>b ? a : b)
#define NMAX 2011
#define pb push_back

int n,c,sol;
int cv[NMAX];
vector<int> g[NMAX];
int tmax;

int main ()
{
    int i,j,k,lim,s,a,b;
    
    freopen("carnati.in","r",stdin);
    freopen("carnati.out","w",stdout);
    scanf("%d%d",&n,&c);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&a,&b);
        cv[i]=b;
        g[a].pb(b);
        tmax=maxim(tmax,a);
    }
    sort(cv+1,cv+n+1);
    for(i=n;i>=1;i--)
    {
        s=0;
        for(j=0;j<=tmax;j++)
        {
            lim=g[j].size();
            for(k=0;k<lim;k++)
                if(g[j][k]>=cv[i])
                    s+=cv[i];
            s-=c;
            sol=maxim(sol,s);
            s=maxim(s,0);
        }
    }
    printf("%d\n",sol);
    return 0;
}