Cod sursa(job #742497)

Utilizator memaxMaxim Smith memax Data 30 aprilie 2012 15:17:18
Problema Problema rucsacului Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <iostream>
#include <fstream>
using namespace std;


int main(){
    ifstream inr ("rucsac.in");
    ofstream our ("rucsac.out");
    int n,q,u,v,e=0;
    inr >> n;
    inr >> q;
    int a[q+1][n+1],b[n+1];
    for(int i=1; i<=n; i++){
            for(int j=1; j<=q; j++){
                    a[j][i]=0;
                    }
            inr >> a[0][i];
            inr >> b[i];
            a[a[0][i]][i]=b[i];
            }
    /*while(inr.good()){
            inr >> u;
            inr >> v;
            if(u<=q){
                     e++;
                     a[0][e]=u;
                     a[u][e]=v;
                     b[e]=v;
                     }
            }*/
    for(int j=1; j<=n-1; j++){
            for(int i=1; i<=q; i++){
                    if(a[i][j]!=0){
                                   u=i+a[0][j+1];
                                   v=a[i][j]+b[j+1];
                                   if(a[i][j]>a[i][j+1]){a[i][j+1]=a[i][j];}
                                   if(u<=q){
                                            if(v>a[u][j+1]){a[u][j+1]=v;}
                                            }
                                   }
                    }
            }
    e=a[1][n];
    for(int i=2; i<=q; i++){
            if(e<a[i][n]){e=a[i][n];}             
            }      
    our << e;
    }