Submission #635577

#TimeUsernameProblemLanguageResultExecution timeMemory
635577ionan6ixAliens (IOI16_aliens)C++17
4 / 100
1 ms340 KiB
#include "aliens.h"
#include<bits/stdc++.h>

using namespace std;

long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) {

    if(n<=50 && m<=100 && k==n) //First Subtask
    {
        int sol = 0;
        vector<vector<int> > matrix;

        matrix.resize(m);

        for(int i = 0;i<m;i++)
            matrix[i].resize(m);

        for(int i=0;i<m;i++)
            for(int j=0;j<m;j++)
                matrix[i][j] = 0;

        for(int i = 0;i<n;i++)
        {
            if(matrix[r[i]][c[i]]) continue;

            int m = min(r[i],c[i]);
            int M = max(r[i],c[i]);
            for(int j = m;j<=M;j++)
                for(int t = m;t<=M;t++)
                    matrix[j][t] = 1;

        }

        for(int i = 0;i<m;i++)
            for(int j=0;j<m;j++)
                sol+=matrix[i][j];

        return sol;
    }
    bool flag = true;

    for(int i = 0;i<n;i++)
        if(r[i]!=c[i])
        {
            flag = false;
            break;
        }

    if(n<=500 && m<=1000 && flag)
    {
        vector<int> dp;
        dp.resize(n);
        for(int i=0;i<n;i++)
            dp[i] = INT_MAX;

        for(int i = 0;i<n;i++)
        {
            for(int j = 0;j<=i;j++)
            {
                int area = (r[i]-r[j]+1)*(c[i]-c[j]+1);
                int f;
                if(j==0) f = 0;
                    else f = dp[j-1];
                dp[i] = min(dp[i],f+area);
            }
        }

        return dp[n-1];
    }
    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...