Submission #559803

# Submission time Handle Problem Language Result Execution time Memory
559803 2022-05-10T15:41:35 Z stefantaga Nafta (COI15_nafta) C++14
0 / 100
1 ms 1108 KB
#include <bits/stdc++.h>

using namespace std;
int r,s,i,j,v[2005][2005];
int dl[]={1,0,0,-1};
int dc[]={0,-1,1,0};
bool interior (int x,int y)
{
    if (1<=x&&x<=r&&1<=y&&y<=s)
    {
        return 1;
    }
    return 0;
}
int viz[2005][2005],sum,minj,maxj;
void fill1(int x,int y)
{
    if (interior(x,y)==0)
    {
        return;
    }
    if (v[x][y]!=-1&&viz[x][y]==0)
    {
        viz[x][y]=1;
        sum=sum+v[x][y];
        minj=min(minj,y);
        maxj=max(maxj,y);
        for (int i=0;i<4;i++)
        {
            fill1(x+dl[i],y+dc[i]);
        }
    }
}
struct interval
{
    int st,dr;
    int sum;
};
vector <interval> inter;
int w[2005][2005],n,din[2005][2005];
void divide(int st,int dr,int opt_st,int opt_dr,int k)
{
    if (st>dr)
    {
        return;
    }
    int mij = (st+dr)/2,opt=0,j;
    for (j=1;j<=mij;j++)
    {
        if (din[mij][k]<=din[j][k-1]+w[mij][j])
        {
            din[mij][k]=din[j][k-1]+w[mij][j];
            opt=j;
        }
    }
    divide(st,mij-1,opt_st,opt,k);
    divide(mij+1,dr,opt,opt_dr,k);
}
int main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(0);
    #ifdef HOME
    ifstream cin("date.in");
    ofstream cout("date.out");
    #endif // HOME
    cin>>r>>s;
    for (i=1;i<=r;i++)
    {
        for (j=1;j<=s;j++)
        {
            char ch;
            cin>>ch;
            if (ch=='.')
            {
                v[i][j]=-1;
            }
            else
            {
                v[i][j]=ch-'0';
            }
        }
    }
    for (i=1;i<=r;i++)
    {
        for (j=1;j<=s;j++)
        {
            if (v[i][j]!=-1&&viz[i][j]==0)
            {
                minj=j;
                maxj=j;
                sum=0;
                fill1(i,j);
                inter.push_back(interval{minj,maxj,sum});
            }
        }
    }
    for (j=0;j<inter.size();j++)
    {
        int st = inter[j].st;
        int dr = inter[j].dr;
        int cost = inter[j].sum;
        din[st][1]+=cost;
        din[dr+1][1]-=cost;
        w[dr][0]+=cost;
        w[dr][st]-=cost;
    }
    n=s;
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=n;j++)
        {
            w[i][j]=w[i][j]+w[i][j-1];
        }
    }
    for (i=1;i<=n;i++)
    {
        din[i][1]=din[i][1]+din[i-1][1];
    }
    for (j=2;j<=n;j++)
    {
        divide(1,n,1,n,j);
    }
    for (i=1;i<=n;i++)
    {
        int maxim=0;
        for (j=1;j<=n;j++)
        {
            maxim=max(maxim,din[j][i]);
        }
        cout<<maxim<<'\n';
    }
    return 0;
}

Compilation message

nafta.cpp: In function 'int main()':
nafta.cpp:98:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<interval>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   98 |     for (j=0;j<inter.size();j++)
      |              ~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 1108 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 1108 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 1108 KB Output isn't correct
2 Halted 0 ms 0 KB -