Submission #1315757

#TimeUsernameProblemLanguageResultExecution timeMemory
1315757cosminvixtorGlobal Warming (NOI13_gw)C++20
0 / 40
1 ms396 KiB
#include <iostream>
using namespace std;

void bubble_sort(int *A,int n) {
    int i,chair,done;
    do {
        done=1;
        for (i=0;i<n-1;i++) {
            if (A[i]<A[i+1]) {
                chair=A[i];
                A[i]=A[i+1];
                A[i+1]=chair;
                done=0;
            }
        }
    } while (!done);
}

void printv(int *A,int n) {
    for (int i=0;i<n;i++) {
        printf("%d ",A[i]);
    }
    printf("\n");
}

int main() {
    int *L,*T,tidx,pidx,vidx,*V,*P,n,i,j,nr,hp,cnt,islands,maxislands;
    FILE *fin,*fout;
    fin=fopen("gw.in","r");
    fscanf(fin,"%d",&n);
    L=(int*)calloc(n,sizeof(int));
    T=(int*)calloc(n,sizeof(int));
    j=1;
    fscanf(fin,"%d",L);
    for (i=1;i<n;i++) {
        fscanf(fin,"%d",&nr);
        if (nr!=L[j-1]) L[j++]=nr;
    }
    tidx=0;
    if (L[0]>L[1]) {
        T[tidx++]=L[0];
    }
    for (i=1;i<n-1;i++) {
        if (L[i-1]<L[i] && L[i]>L[i+1]) T[tidx++]=L[i];
        else if (L[i-1]>L[i] && L[i]<L[i+1]) T[tidx++]=L[i];
    }
    if (L[n-2]<L[n-1]) {
        T[tidx++]=L[n-1];
    }
    free(L);
    V=(int*)calloc(tidx/2,sizeof(int));
    P=(int*)calloc(tidx/2+1,sizeof(int));
    vidx=0; pidx=0;
    for (i=0;i<tidx;i+=2) P[pidx++]=T[i];
    for (i=1;i<tidx;i+=2) V[vidx++]=T[i];
    free(T);
    bubble_sort(P,pidx);
    bubble_sort(V,vidx);
    //printv(P,pidx);
    //printv(V,vidx);
    islands=0; maxislands=0; i=0; j=0;
    while (i<pidx || j<vidx) {
        if (P[i]>V[j]) {
            hp=P[i];
            cnt=1;
            while (P[++i]==hp) cnt++;
            islands+=cnt;
        } else {
            hp=V[j];
            cnt=1;
            while (V[++j]==hp) cnt++;
            islands-=cnt;
        }
        if (islands>maxislands) maxislands=islands;
    }
    printf("%d\n",maxislands);
}

Compilation message (stderr)

gw.cpp: In function 'int main()':
gw.cpp:30:11: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     fscanf(fin,"%d",&n);
      |     ~~~~~~^~~~~~~~~~~~~
gw.cpp:34:11: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |     fscanf(fin,"%d",L);
      |     ~~~~~~^~~~~~~~~~~~
gw.cpp:36:15: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |         fscanf(fin,"%d",&nr);
      |         ~~~~~~^~~~~~~~~~~~~~
#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...