Cod sursa(job #1360656)

Utilizator TibixbAndrei Tiberiu Tibixb Data 25 februarie 2015 17:05:54
Problema Carnati Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<fstream>
#include<algorithm>
using namespace std;
struct x2{
    int t;
    int p;
};
x2 x[2003];
int cmp(x2 x, x2 y){
    return x.t<y.t;
}
int n, i, q, pret, s, sal, sol, timp;
ifstream in("carnati.in");
ofstream out("carnati.out");
int main(){
    in>>n>>sal;
    for(i=1; i<=n; i++)
        in>>x[i].t>>x[i].p;
    sort(x+1, x+n+1, cmp);
    x[0].t=x[1].t;
    for(q=1; q<=n; q++){
        pret=x[q].p;
        s=-99999;
        timp=1;
        for(i=1; i<=n; i++){
            if(s+(x[i].p>=pret?pret:0)-(x[i].t-x[timp].t+1)*sal>=(x[i].p>=pret?pret:0)-(x[i].t-x[timp].t+1)*sal){
                if(s<pret)
                    timp=i;
                s+=(x[i].p>=pret?pret:0)/*-(x[i].t-x[i-1].t+1)*sal*/;
            }
            else{
                s=(x[i].p>=pret?pret:0)/*-(x[i].t-x[i-1].t+1)*sal*/;
                timp=i;
            }
            if(s-(x[i].t-x[timp].t+1)*sal>sol)
                sol=s-(x[i].t-x[timp].t+1)*sal;
        }
    }
    out<<sol;
return 0;
}