Cod sursa(job #373999)

Utilizator titusuTitus C titusu Data 15 decembrie 2009 17:42:55
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
using namespace std;
#include <fstream>
#include <iostream>
#include <cassert>

int n,c,t[2005],p[2005],v[1505],tmax;

int main(){
	ifstream fin("carnati.in");
	fin>>n>>c;
	for(int i=1;i<=n;i++){
		fin>>t[i]>>p[i];
		if(t[i]>tmax)
			tmax=t[i];
	}
	fin.close();
	int pmax=-(1<<30);
	for(int i=1;i<=n;i++){
		for(int j=0;j<=tmax; j++)
			v[j]=-c;
		for(int j=1;j<=n;j++)
			if(p[i]<=p[j])
				v[t[j]]+=p[i];
		int sum=v[0],sumMax=-(1);
		for(int j=1;j<=tmax;j++){
			if(sum<0)
				sum=v[j];
			else
				sum+=v[j];
			if(sum>sumMax)
				sumMax=sum;
		}
		if(sumMax>pmax)
			pmax=sumMax;
	}
	ofstream fout("carnati.out");
	fout<<pmax;
	return 0;
}