Submission #278143

#TimeUsernameProblemLanguageResultExecution timeMemory
278143shinjanGondola (IOI14_gondola)C++14
25 / 100
20 ms768 KiB
#include <iostream>
#include <bits/stdc++.h>
#include "gondola.h"
using namespace std;
set<int> gond;
int valid(int n,int seq[])
{
    int prvi=-1;
    for(int i=0;i<n;i++)
    {
        if(seq[i]<=n)
        {
            prvi=i;
            break;
        }
    }
    if(prvi==-1)
    {
        for(int i=0;i<n;i++)
        {
            if(gond.find(seq[i])!=gond.end())
            {
                return 0;
            }
            gond.insert(seq[i]);
        }
        return 1;
    }
    int tren=seq[prvi];
    for(int i=prvi+1;i<n;i++)
    {
        if(tren==n)
        {
            if(seq[i]!=1)
            {
                if(seq[i]<=n)
                {
                    return 0;
                }
                if(gond.find(seq[i])!=gond.end())
                {
                    return 0;
                }
                gond.insert(seq[i]);
            }
            tren=1;
        }
        else if(seq[i]!=tren+1)
        {
            if(seq[i]<=n)
            {
                return 0;
            }
            if(gond.find(seq[i])!=gond.end())
            {
                return 0;
            }
            gond.insert(seq[i]);
            tren=tren+1;
        }
        else{
            tren=tren+1;
        }
    }
    for(int i=0;i<=prvi;i++)
    {
        if(tren==n)
        {
            if(seq[i]!=1)
            {
                if(seq[i]<=n)
                {
                    return 0;
                }
                if(gond.find(seq[i])!=gond.end())
                {
                    return 0;
                }
                gond.insert(seq[i]);
            }
            tren=1;
        }
        else if(seq[i]!=tren+1)
        {
            if(seq[i]<=n)
            {
                return 0;
            }
            if(gond.find(seq[i])!=gond.end())
            {
                return 0;
            }
            gond.insert(seq[i]);
            tren=tren+1;
        }
        else{
            tren=tren+1;
        }
    }
    return 1;
}
int replacement(int n, int gondola[], int promena[])
{
    int prvi=-1;
    vector <pair<int,int>> v;
    for(int i=0;i<n;i++)
    {
        if(gondola[i]<=n)
        {
            prvi=i;
            break;
        }
    }
    if(prvi==-1)
    {
        for(int i=0;i<n;i++)
        {
            v.push_back({gondola[i],i+1});
        }
        sort(v.begin(),v.end());
        int tren=n+1;
        int poz=0;
        for(int i=0;i<v.size();i++)
        {
            promena[poz]=v[i].second;
            poz++;
            while(tren!=v[i].first)
            {
                promena[poz]=tren;
                poz++;
                tren++;
            }
        }
        return poz;
    }
    int next;
    if(gondola[prvi]==n)
    {
        next=1;
    }
    else{
        next=gondola[prvi]+1;
    }
    for(int i=prvi+1;i<n;i++)
    {
        if(gondola[i]!=next)
        {
            v.push_back({gondola[i],next});
        }
        if(next==n)
        {
            next=1;
        }
        else{
            next++;
        }
    }
    for(int i=0;i<prvi;i++)
    {
        if(gondola[i]!=next)
        {
            v.push_back({gondola[i],next});
        }
        if(next==n)
        {
            next=1;
        }
        else{
            next++;
        }
    }
    sort(v.begin(),v.end());
    int tren=n+1;
    int poz=0;
    for(int i=0;i<v.size();i++)
    {
        promena[poz]=v[i].second;
        poz++;
        while(tren!=v[i].first)
        {
            promena[poz]=tren;
            poz++;
            tren++;
        }
    }
    return poz;
}
int countReplacement(int n, int inputSeq[])
{
    return 0;
}

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:123:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  123 |         for(int i=0;i<v.size();i++)
      |                     ~^~~~~~~~~
gondola.cpp:175:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  175 |     for(int i=0;i<v.size();i++)
      |                 ~^~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...