Cod sursa(job #1096658)

Utilizator AeroHHorea Stefan AeroH Data 2 februarie 2014 14:44:49
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <utility>
#include <set>
#include <map>
#include <cmath>
#include <bitset>
#define ll long long int
#define punct pair<ll,ll>
#include <cstdio>
using namespace std;
//ifstream cin(".in");
//ofstream cout(".out");
//ios_base::sync_with_stdio(false);
ifstream f("rucsac.in");
ofstream g("rucsac.out");
FILE*fin=fopen("rucsac.in","r");
FILE*fout=fopen("rucsac.out","w");
int i,a,dif1,dif2,b,x,y,n,M,k,maxi,N,rasp,kk,sum,S,smax,P,ix,iy,ii,T,l,w,p;
int j;
int DX[]={-1,-1,-1,0,0,1,1,1};
int DY[]={1,0,-1,1,-1,1,0,-1};
void Fill(short int x,short int y)
    {
           // for (int k=0;k<8;++k)
            //    if (m[x+DX[k]][y+DY[k]])
            //        m[x+DX[k]][y+DY[k]]=0,Fill(x+DX[k],y+DY[k]),++T;
    }
int G[10001];
int main ()
{
fscanf(fin,"%d%d",&N,&M);
/*for (i=2;i<=2000;++i)
    if (!ch[i])
    for (j=i*i;j<=2000;j+=i)
        ch[j]=1;
for (i=1;i<=2000;++i)
    if (!ch[i])
    prime[++k]=i;*/
    for (i=1;i<=N;++i)
        {
            fscanf(fin,"%d%d",&w,&p);
            for (j=M-w;j>=0;--j)
                if (G[j+w]<G[j]+p)
                          G[j+w]=G[j]+p;
        }

    for (i=0;i<=M;++i)
        if (G[i]>maxi)
            maxi=G[i];
    g<<maxi;
    return 0;
}