Cod sursa(job #1525282)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 14 noiembrie 2015 22:06:47
Problema Oite Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#define MAXC 1024
#define MOD 6663
int v[MAXC+1],ind[MOD],next[MAXC*MAXC],sum[MAXC*MAXC];
int main(){
    FILE*fi,*fout;
    int i,j,n,c,l,poz,x,s;
    long long con;
    fi=fopen("oite.in" ,"r");
    fout=fopen("oite.out" ,"w");
    fscanf(fi,"%d%d" ,&c,&l);
    for(i=1;i<=c;i++)
        fscanf(fi,"%d" ,&v[i]);
    con=0;
    n=1;
    for(i=1;i<=c-1;i++){
        for(j=i+1;j<=c;j++){
            s=l-v[i]-v[j];
            if(s>0){
                x=s%MOD;
                poz=ind[x];
                while(poz){
                    if(sum[poz]==s)
                        con++;
                    poz=next[poz];
                }
            }
        }
        for(j=1;j<i;j++){
            sum[n]=v[j]+v[i];
            x=sum[n]%MOD;
            next[n]=ind[x];
            ind[x]=n;
            n++;
        }
    }
    fprintf(fout,"%lld" ,con);
    fclose(fi);
    fclose(fout);
    return 0;
}