Submission #156024

#TimeUsernameProblemLanguageResultExecution timeMemory
156024Ruxandra985Lottery (CEOI18_lot)C++14
100 / 100
1069 ms8388 KiB
#include <cstdio>
#include <algorithm>
using namespace std;
int x;
int dp[110][10010],v[10010];
pair <int,int> w[110];
int poz[110],l,d[10010];
void paralel (int i , int j){
    int pas = 0;
    if (i==j)
        return;
    while (i && j){
        pas++;
        x+=(v[i] != v[j]);
        if (pas > l)
            x-=(v[i+l] != v[j+l]);

        /// ai stabilit distanta dintre sirul care inc la i si cel care inc la j

        //printf ("%d %d %d\n",i,j,x);
        if (pas>=l){
           // if (d[x] == 1){
             //   printf ("%d %d %d\n",i,j,x);
            //}
            dp[d[x]][i]++;
        }

        i--;
        j--;
    }
}
int main()
{
    FILE *fin = stdin;
    FILE *fout = stdout;
    int n,i,q,j,last;
    fscanf (fin,"%d%d",&n,&l);
    for (i=1;i<=n;i++)
        fscanf (fin,"%d",&v[i]);
    fscanf (fin,"%d",&q);
    for (i=1;i<=q;i++){
        fscanf (fin,"%d",&w[i].first);
        w[i].second = i;
    }
    sort (w+1,w+q+1);
    w[0].first = -1;
    /// d[x] = indicele minim al unui w cu w.first >= x
    last = q+1;
    for (i=l;i>=0;i--){
        while (i == w[last-1].first)
            last--;
        d[i] = last;
    }

    for (i=1;i<=n;i++){
        x = 0;
        paralel(i,n);
    }
    for (j=n-1;j;j--){
        x = 0;
        paralel(n,j);
    }

    for (i=1;i<=q;i++){
        for (j=1;j<=n;j++){
            dp[i][j]+=dp[i-1][j];
        }
        poz[w[i].second] = i;
    }

    for (i=1;i<=q;i++){
        for (j=1;j<=n-l+1;j++){
            fprintf (fout,"%d ",dp[poz[i]][j]);
        }
        fprintf (fout,"\n");
    }

    return 0;
}

Compilation message (stderr)

lot.cpp: In function 'int main()':
lot.cpp:37:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d%d",&n,&l);
     ~~~~~~~^~~~~~~~~~~~~~~~~~
lot.cpp:39:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d",&v[i]);
         ~~~~~~~^~~~~~~~~~~~~~~~
lot.cpp:40:12: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     fscanf (fin,"%d",&q);
     ~~~~~~~^~~~~~~~~~~~~
lot.cpp:42:16: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         fscanf (fin,"%d",&w[i].first);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...