Cod sursa(job #18517)

Utilizator tvladTataranu Vlad tvlad Data 18 februarie 2007 12:31:08
Problema Tricouri Scor 20
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 9-a si gimnaziu Marime 0.74 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int N = 300000;
int n,m;
int a[N];
int k,p;
int s,sm;

void back ( int lvl, int prev ) {
    for (int i = prev + 1; i < n; ++i) {
        s += a[i];
        if (lvl == k-1) {
            if (s > sm && s % p == 0) {
                sm = s;
            }
        } else {
            back(lvl+1,i);
        }
        s -=a[i];
    }
}

int main() {
    freopen("tricouri.in","r",stdin);
    freopen("tricouri.out","w",stdout);
    int m;
    scanf("%d %d",&n,&m);
    for (int i = 0; i<n; i++) {
        scanf("%d",&a[i]);
    }
    sort(a,a+n);
    for (; m>0; --m) {
        scanf("%d %d",&k,&p);
        sm = -1; s = 0;
        back(0,-1);
        printf("%d\n",sm);
    }
    return 0;
}